uva1587BOX
给定6个矩形的长和宽wi和hi(1≤wi,hi≤1000),判断它们能否构成长方体的6个面。
思路是首先排序,每个矩形都是x<y,就是短边x,长边y,然后对六个矩形进行二级排序,排序以后构成长方体的条件有两步,第一步,首先是三对相同的长和宽,排序之后是0和1,2和3,4和5,是相同的。
接下来第二步,根据0,2,4,这三对数来看,0.x必然等于2.x,0.y必然等4.x,2.y必然等于4.y;至于为什么,长方体有三种不同的边,我们记为abc,并且记a>b>c,则长方体的六个面必定是ab、ab、ac、ac、bc、bc(按照边的长度排序),符合这种形式的就是一个长方体。下面有两份代码,思路是一样的,实现方式不一样,
先看看我的代码,比较渣
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std; struct boxs
{
int x, y;
}box[]; bool cmp(boxs b1,boxs b2)
{
if (b1.x < b2.x)//一级排序
return true;
else // 二级排序
{
if (b1.x == b2.x)
{
if (b1.y < b2.y)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
bool check()
{
if ((!(box[].x==box[].x&&box[].y==box[].y)) || (!(box[].x == box[].x&&box[].y == box[].y)) || (!(box[].x == box[].x&&box[].y == box[].y)))return false;
if (box[].x != box[].x || box[].y != box[].x || box[].y != box[].y) return false;
return true;
}
int main()
{
int a, b;
while (cin>>a>>b) {
if (a > b) {
box[].x = b;
box[].y = a;
}
else {
box[].x = a;
box[].y = b;
}
for (int i = ;i < ;i++) {
cin >> a >> b;
if (a > b) {
box[i].x = b;
box[i].y = a;
}
else {
box[i].x = a;
box[i].y = b;
}
}
sort(box, box + , cmp);
cout << (check() ? "POSSIBLE" : "IMPOSSIBLE" )<< endl;
}
return ;
}
别人的代码
#include <bits/stdc++.h>
using namespace std; struct face{
int x, y;
}a[];
bool check()
{
if(memcmp(a, a+, sizeof(face)) || memcmp(a+, a+, sizeof(face)) || memcmp(a+, a+, sizeof(face))) return false;
if(a[].x!=a[].x || a[].y!= a[].x || a[].y!=a[].y) return false;
return true;
}
int main()
{
while(cin >> a[].x >> a[].y >> a[].x >> a[].y >> a[].x >> a[].y >> a[].x >> a[].y >> a[].x >> a[].y >> a[].x >> a[].y){
for(int i = ; i < ; ++i)
if(a[i].x < a[i].y)
swap(a[i].x, a[i].y);
sort(a, a+, [](const face a, const face b) {return a.x==b.x ? (a.y > b.y) : (a.x > b.x);});
printf("%s\n", check() ? "POSSIBLE" : "IMPOSSIBLE");
}
return ;
}
uva1587BOX的更多相关文章
随机推荐
- springmvc 向页面传值
- PHP fastcgi模式大文件上传500错误
最近在项目中中上传图片时,大约有300多K,结果报了个服务器错误,以前从未遇到过,错误的内容如下: mod_fcgid: www.111cn.net HTTP request length 13229 ...
- BZOJ 1833 count 数字计数
sb数位dp. #include<iostream> #include<cstdio> #include<cstring> #include<algorith ...
- unix exec族函数 关于参数的疑惑
问题不出在这几个函数,而在于看后文解释器的时候发现一个很奇妙的问题. #include <unistd.h> int execl(const char *pathname, const c ...
- Spring将多个配置文件引入一个配置文件中
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 51nod-1732 婚姻介绍所(后缀数组)
题目大意:回答任意两个子串的最长公共前缀. 题目分析:后缀数组的模板题.但是输入输出都要外挂. 代码如下: # include<iostream> # include<cstdio& ...
- MongoDB学习笔记一:入门
文档:多个键及其关联的值『有序』地放置在一起. {"greeting" : "Hello, world!", "foo" : 3}集合:一组 ...
- 安装初始化mysql后,默认几个库介绍
背景介绍: 当我们安装初始化mysql后,默认建了几个数据库,那么这些数据库有什么作用呢?mysql> show databases;+--------------------+| Datab ...
- 20151215单选按钮列表,复选框列表:CheckBoxList
单选框:RadioButton GroupName:组名,如果要实现单选效果每个单选按钮的组名必须一样 是否被选中 RadioButton.checked 单选按钮列表:RadioButtonList ...
- Unity3D外包
北京动点软件长年承接Unity3D(U3D外包)项目,我们制作各类型VR/AR游戏,虚拟现实,增强现实项目! 品质保证,售后完备. 联系请加QQ:372900288 电话:13911652504 我 ...