问题 1471: [蓝桥杯]矩形面积交

1.相离:
一对x中小的那个比另一对x中大的那个还大
一对x中大的那个比另一对x中小的那个还小
一对y中小的那个比另一对y中大的那个还大
一对y中大的那个比另一对y中小的那个还小
2.相交:
将四个横坐标排序,中间的两个大的减去小的,就是相交矩形平行于x轴的边。
纵坐标同理

#include <iostream>
#include <iomanip>
#include<algorithm>
using namespace std;

int main(){
	double x1, x2, y1, y2;
	double x3, x4, y3, y4;
	double area;
	cin >> x1 >> y1 >> x2 >> y2;//(x1, y1) (x2, y2)
	cin >> x3 >> y3 >> x4 >> y4;//(x3, y3) (x4, y4)
	//相离的四种情况
	if (min(x1, x2) > max(x3, x4) || min(x3, x4) > max(x1, x2) || min(y1, y2) > max(y3, y4) || min(y3, y4) > max(y1, y2))
		area = 0;
	//相交
	else {
		double x[4] = { x1, x2, x3, x4 };
		double y[4] = { y1, y2, y3, y4 };
		sort(x, x + 4);
		sort(y, y + 4);
		area = (x[1] - x[2]) * (y[1] - y[2]);
	}
	cout << fixed << setprecision(2) << area;
	return 0;
}

总结:
1.这里使用数组直接sort排序
sort函数用法
2.使用库函数可以更加简单
3.格式化输出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值