201912-2 回收站选址 csp ccf计算机职业资格认证考试真题 java

一、
问题描述
试题编号: 201912-2
试题名称: 回收站选址
时间限制: 1.0s
内存限制: 512.0MB
201912-2 回收站选址 csp ccf计算机职业资格认证考试真题 java_第1张图片201912-2 回收站选址 csp ccf计算机职业资格认证考试真题 java_第2张图片201912-2 回收站选址 csp ccf计算机职业资格认证考试真题 java_第3张图片
二、思考问题
1.校园总共有多大?
        题目中并没有给出校园的面积,那我们便把它当做无限大,所以我们不可能存下整个校园,事实上只需存储垃圾点的位置便可以。
2.用何种方式存储垃圾点的位置?
        可以创建两个长度为n(垃圾点个数)的一维数组,分别保存垃圾点的横纵坐标。
3.接下来只需遍历每个垃圾点,检查此垃圾点上下左右位置是否有垃圾,若有则进行评分。

三、代码

import java.util.Scanner;


public class Main {
	
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n = sc.nextInt();
       int[] row=new int[n];//存储垃圾点的横坐标
       int[] col=new int[n];//存储垃圾点的纵坐标
       for(int i=0;i<n;i++){//录入数据
    	   row[i]=sc.nextInt();
    	   col[i]=sc.nextInt();
       }
       //分别表示评分为0、1、2、3、4垃圾点的个数
       int num0=0,num1=0,num2=0,num3=0,num4=0;
       
       for(int i=0;i<n;i++){
           //判断此垃圾点的上下左右是否都有垃圾
    	   if(search(row,col,row[i]-1,col[i])&&
    	   search(row,col,row[i]+1,col[i])&&
    	   search(row,col,row[i],col[i]-1)&&
    	   search(row,col,row[i],col[i]+1)){
    		   //选为垃圾点,对它评分
    		   int temp=0;
    		   if(search(row,col,row[i]-1,col[i]-1)) temp++;
    		   if(search(row,col,row[i]+1,col[i]-1)) temp++;
    		   if(search(row,col,row[i]-1,col[i]+1)) temp++;
    		   if(search(row,col,row[i]+1,col[i]+1)) temp++;
    		   switch(temp){
    		   case 0:num0++;break;
    		   case 1:num1++;break;
    		   case 2:num2++;break;
    		   case 3:num3++;break;
    		   case 4:num4++;
    		   }
    	   }  
       }
       System.out.println(num0);
       System.out.println(num1);
       System.out.println(num2);
       System.out.println(num3);
       System.out.println(num4);
    }
    
    //查找位置(r,c)是否有垃圾
    static boolean search(int[] row,int[] col,int r,int c){
    	for(int i=0;i<row.length;i++){
    		if(row[i]==r && col[i]==c)
    			return true;
    	}
    	return false;
    }
    
}

你可能感兴趣的:(201912-2 回收站选址 csp ccf计算机职业资格认证考试真题 java)