盒子(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;
}
复制代码

 

posted @   Vincent-yuan  阅读(237)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示