兩矩形並面積

點擊:題目鏈接

線段重疊,推矩形重疊 

AC代碼:

#include<iostream>
#include<map>
using namespace std;
struct node{
	int x, y;
	int x1, y1;
}; 

bool isR(node a, node b){
	if(max(a.x, b.x) < min(a.x1, b.x1) && max(a.y, b.y) < min(a.y1, b.y1))
	return true;
	return false;
}
int main(){
	node ret[2];
	int ans = 0;
	for(int i = 0; i < 2;i ++){
		cin >> ret[i].x >> ret[i].y >> ret[i].x1 >> ret[i].y1;
		int lenx = ret[i].x1 - ret[i].x;
		int leny = ret[i].y1 - ret[i].y;
		ans += lenx * leny;
	}
	if(isR(ret[0], ret[1])){
		int a = (ret[0].x1 < ret[1].x1 ? ret[0].x1 : ret[1].x1);
		int b = (ret[0].x > ret[1].x ? ret[0].x : ret[1].x);
		int len = a - b;
		int high =  (ret[0].y1 < ret[1].y1 ? ret[0].y1 : ret[1].y1) - (ret[0].y > ret[1].y?ret[0].y : ret[1].y);
		cout << ans - (len * high) << endl;
	}else{
		cout << ans << endl;
	}
	return 0;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章