盒子(Box, UVa1587)
题目:
给定6个矩形的长和宽wi 和 hi(1<=wi, hi<=1000),判断它们是否构成长方体的6个面。
分析
如果一组数据能构成长方体,则6个面满足:
a, b
a, b
a, c
a, c
b, c
b, c
其中 a<=b <= c
如果把输入的数据排序之后,很容易进行判断,即 1, 2组,3,4组,5,6 组分别相等。
且1,3的x相等,2,4的y相等,1组的y与5组的x相等。
c实现
#include<stdio.h> //定义结构体存储宽高 struct pallet{ int x; int y; }pallet[6]; //交换数据 void swap(int *a,int *b){ int t=*a; *a = *b; *b = t; } //对6个面排序,按 a,b; a,b; a,c; a,c; b,c;b,c; 总体为a<b<c void sort(){ for(int i=5;i>=0;i--){ for(int j=0;j<i;j++){ if(pallet[j].x>pallet[j+1].x){ swap(&pallet[j].x,&pallet[j+1].x); swap(&pallet[j].y,&pallet[j+1].y); }else if(pallet[j].x==pallet[j+1].x && pallet[j].y>pallet[j+1].y){ swap(&pallet[j].x, &pallet[j+1].x); swap(&pallet[j].y,&pallet[j+1].y); } } } } //检验如果满足如下条件,则impossible int check(){ if(pallet[0].x== pallet[1].x && pallet[0].y==pallet[1].y && pallet[2].x==pallet[3].x && pallet[2].y == pallet[3].y && pallet[4].x == pallet[5].x && pallet[4].y == pallet[5].y && pallet[0].x == pallet[2].x && pallet[2].y == pallet[4].y && pallet[0].y == pallet[4].x){ return 1; } return 0; } int main() { while(scanf("%d%d",&pallet[0].x, &pallet[0].y)==2){ //保证 x< y if(pallet[0].x > pallet[0].y){ swap(&pallet[0].x,&pallet[0].y); } for(int i=1;i<6;i++){ scanf("%d%d",&pallet[i].x,&pallet[i].y); if(pallet[i].x>pallet[i].y){ swap(&pallet[i].x,&pallet[i].y); } } sort(); if(check()){ printf("POSSIBLE\n"); }else{ printf("IMPOSSIBLE\n"); } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现