不要二
题目描述:
二货小易有一个W*H的网格盒子,网格的行编号为0-(H-1)。网格的列编号为0-(W-1)。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根。小易想知道最多可以放多少块蛋糕在网格盒子里。
解题思路:
根据上图分析,( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) )不等于4;
若(x1-x2) * (x1-x2) = 0,且x1=x2的情况下,y1-y2 = 2;
在(y1-y2) * (y1-y2) = 0,且 y1=y2的情况下,x1-x2=2。
也就是说在[i][j]放了蛋糕的情况下,[i+2][j]和[i][j+2]就不能放蛋糕了,同时需要考虑越界情况。
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int col = in.nextInt();
int row = in.nextInt();
int count = 0;
int[][]array = new int[row][col];
for (int i = 0;i < row; i++){
for(int j = 0;j < col;j++){
if(array[i][j] == 0){
count++;
if(i+2 < row){
array[i+2][j] = 1;
}
if(j+2 < col){
array[i][j+2] = 1;
}
}
}
}
System.out.println(count);
}
}