UAV--253,滚骰子,模拟

该博客探讨了UAV-253问题,涉及两个具有红、蓝、绿三种颜色面的骰子。问题在于判断骰子是否等价,即所有对应面颜色是否相同。通过分析骰子的旋转状态,发现每个面有4种可能的展示方式,总共有24种组合。博主提出使用枚举法,对第一个骰子的所有可能状态与第二个骰子比较,若存在匹配情况,则骰子等价。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UAV--253 Cube painting,骰子涂色——模拟


在这里插入图片描述 在这里插入图片描述
在这里插入图片描述

题意:给两个有红(r)蓝(b)绿(g)三种颜色的骰子,连接的面可以是一种颜色,判断这两个骰子是不是同一种骰子,即个个对应面是否相同。输入形式为:上前左右后下(对应面的颜色)。

思路:骰子通过不同方式的旋转可以有的结果有限且不大,每个面朝上时可以有四种不同的方式旋转,一共有6*4=24种情况,所以可以采用枚举的方法,以其中一个(代码是默认是以第一个骰子)骰子所能产生的所有结果和第二个进行比较,如果有相同的情况,即两个骰子等价。

#include <bits/stdc++.h>
using namespace std;
/*freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);*/
#define ll long long
#define maxc 10010
#define mod 7
char a[10];//原数组
char v[10];//比较数组
int d[6][6] = { { 0, 1, 2, 3, 4, 5 }, //上前左右后下
                { 1, 0, 3, 2, 5, 4 },
                { 2, 0, 1, 4, 5, 3 },
                { 3, 1, 0, 5, 4, 2 },
                { 4, 2, 0, 5, 3, 1 },
                { 5, 2, 1, 4, 3, 0 }};
int bh(){
    for(int i=0;i<6;i++){
        char s[10];//变换数组
            memset(s,0,sizeof(s));
            for(int j=0;j<6;j++)
                s[j]=a[d[i][j]];
            for(int j=0;j<4;j++){
                char k;//上前左右后下
                k=s[1];
                s[1]=s[2];
                s[2]=s[4];
                s[4]=s[3];
                s[3]=k;
                if(strcmp(s,v)==0)//strcmp函数,两字符串相等返回0
                    return 1;
            }
    }
    return 0;
}
int main()
{
    char s;
    /*freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);*/
    while(~scanf("%c",&s)){
        memset(a,0,sizeof(a));
        memset(v,0,sizeof(v));
        a[0]=s;
        for(int i=1;i<6;i++)
            scanf("%c",&a[i]);
        for(int i=0;i<6;i++)
            scanf("%c",&v[i]);
        getchar();
        if(bh())
            cout<<"TRUE"<<endl;
        else
            cout<<"FALSE"<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值