題目分析:題意還是挺好理解的。如果某點(有垃圾)的上、下、左和右都存在垃圾,則此點可以充當垃圾站。然後給此垃圾站評分,評分即爲此垃圾站對角線含有垃圾的個數。根據上述題意解讀,可以依次遍歷每個點,檢查其是否符合垃圾站的要求,若不符合,continue;若符合,則統計垃圾站的評分。
Note:數據的規模爲,因此可以使用雙循環遍歷。數據的大小爲,即使用int型整數即可。按照上述思路提交之後,發現只有80分,報錯信息爲運行出錯。後檢查爲讀入數據後添加
scanner.nextLine(); //讀取輸入,包括單詞之間的空格和除回車以外的所有符號(即。它讀到行尾)。讀取輸入後,nextLine()將光標定位在下一行。
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int [][]points = new int[num][2];
for(int i=0;i<num;i++) {
points[i][0] = scanner.nextInt();
points[i][1] = scanner.nextInt();
}
int []lajizhan_num = new int[5];
Arrays.fill(lajizhan_num, 0);
for(int i=0;i<num;i++) {
int sum = 0;
boolean flag_up = false;
boolean flag_down = false;
boolean flag_left = false;
boolean flag_right = false;
for(int j=0;j<num;j++) {
if(i==j)
continue;
if((points[i][0]==points[j][0])&&((points[i][1]+1)==points[j][1]))
flag_up = true;
if((points[i][0]==points[j][0])&&((points[i][1]-1)==points[j][1]))
flag_down = true;
if(((points[i][0]-1)==points[j][0])&&(points[i][1]==points[j][1]))
flag_left = true;
if(((points[i][0]+1)==points[j][0])&&(points[i][1]==points[j][1]))
flag_right = true;
if(((points[i][0]+1)==points[j][0])&&((points[i][1]+1)==points[j][1]))
sum++;
if(((points[i][0]-1)==points[j][0])&&((points[i][1]-1)==points[j][1]))
sum++;
if(((points[i][0]+1)==points[j][0])&&((points[i][1]-1)==points[j][1]))
sum++;
if(((points[i][0]-1)==points[j][0])&&((points[i][1]+1)==points[j][1]))
sum++;
}
if(flag_up&&flag_down&&flag_left&&flag_right) {
lajizhan_num[sum]++;
}
}
for(int i=0;i<5;i++)
System.out.println(lajizhan_num[i]);
}
}