Box
给定6个矩形的长和宽wi和hi(i<=wi,hi<=1000),判断它们能否构成从长方体的六个面
需要了解pair,用pair来储存长和宽,同时需要知道,用sort给pair的数组排序时,会先按照第一个值从大到小排列,再考虑第二个值从大到小排列
思路:
将六个矩形储存在pair的数组中,将他们排序,排序后,第一个pair中的最小值,等于第二个第三个第四个的最小值,第一个pair的最大值等于第二个的最大值和第五个第六个的最小值,第三个pair的最大值等于第四个第五个第六个的最大值。因为长方体中假设长宽高都不同,那么按照刚刚的排序方法,必然最小的边是前四个pair的最小值,后两个是长宽高中第二大的值,继续按照如上排序,前四个中pair的第二个值排序,所以前两个是第二大值,剩下的地方为长宽高中最大的值
例如:
6 13
6 13
6 25
6 25
13 25
13 25
代码如下:
#include<iostream> using namespace std; #include<algorithm> int main(void) { while (1) { pair<int, int> p[6]; for (int i = 0; i < 6; i++) { if (cin >> p[i].first >> p[i].second) { if (p[i].first > p[i].second) { swap(p[i].first, p[i].second); } } else return 0; } sort(p, p + 6); puts(p[0].first == p[1].first && p[0].first == p[2].first && p[0].first == p[3].first && p[0].second == p[1].second && p[0].second == p[4].first && p[0].second == p[5].first && p[2].second == p[3].second && p[2].second == p[4].second && p[2].second == p[5].second ? "POSSIBLE" : "IMPOSSIBLE"); } return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~


浙公网安备 33010602011771号