在题目中由于题目本身给的是点的坐标,我们需要进行转换,转化成为格子的坐标
我们可以人为的定义格子的坐标,可以发现最后一个点的坐标表示的是最后一个方格的右上角,所以对于每一个方格来说,以他的左下角的点为准
简而言之就是忽略最后一个点
我的想法是通过长度获取面积,但是无法去除重复面积,然后又想到了大面积减去小面积,但是还是会在点上进行计算
所以参考了y总的代码!是以格子为单位,然后对格子进行计算,对于重复的采用了bool数组的方式,重复的也是直接记为true
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
/**
* @param args
* @throws IOException
* @throws NumberFormatException
*/
static final int N=110;
static boolean f[][]=new boolean [N][N];
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(System.in));
int n=Integer.parseInt(bufferedReader.readLine());
while(n>0){
n--;
String p[]=bufferedReader.readLine().split(" ");
int a=Integer.parseInt(p[0]);
int b=Integer.parseInt(p[1]);
int c=Integer.parseInt(p[2]);
int d=Integer.parseInt(p[3]);
for(int i=a;i<c;i++){
for(int j=b;j<d;j++){
f[i][j]=true;
}
}
}
int res=0;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(f[i][j]){
res++;
}
}
}
System.out.println(res);
}
}