【模拟】Codeforces #444 C. Solution for Cube

实现起来有点难受,写了个长达三行的if语句,丑的要屎了
题意:给出一个二阶魔方的6面颜色,问能不能一部还原。
思路:只能转一下的话,说明有两个对立面已经还原好了,先判断是否有两个还原好的对立面。接着考虑向左向右转两种情况 ifififif好多if。

看到江老板冒泡切了这题!激动!
发现把这么多等号写成一个函数会轻松很多orz。

#include<bits/stdc++.h>
using namespace std;

int cu[25];
bool same(int a[]){
    for(int i=1;i<4;i++){
        if(a[i]!=a[i-1]) return 0;
    }
    return 1;
}

bool ju(){
    int pa = 0;
    int poi[10];int cnt = 0;
    if(same(cu+1)) pa+=1,poi[cnt++] = 1;
    if(same(cu+5)) pa+=2,poi[cnt++] = 2;
    if(same(cu+9)) pa+=6,poi[cnt++] = 3;
    if(same(cu+13)) pa+=3,poi[cnt++] = 4;
    if(same(cu+17)) pa+=4,poi[cnt++] = 5;
    if(same(cu+21)) pa+=5,poi[cnt++] = 6;
    if(cnt!=2 || pa!=7) return 0;
    if(poi[0]>poi[1]) swap(poi[0],poi[1]);
    if(poi[0] == 1 &&poi[1] == 3){
        if(cu[5] == cu[6] &&cu[19]==cu[20]&&cu[5]==cu[19]&&cu[17]==cu[18]&&cu[18]==cu[23]&&cu[23]==cu[24]&&cu[21] == cu[22] &&cu[15]==cu[16]&&cu[22]==cu[15]&&cu[13] == cu[14] &&cu[7]==cu[8]&&cu[14]==cu[7]) return 1;
        if(cu[5] == cu[6] &&cu[15]==cu[16]&&cu[5]==cu[15]&&cu[13]==cu[14]&&cu[23]==cu[24]&&cu[13]==cu[23]&&cu[19] == cu[20] &&cu[21]==cu[22]&&cu[19]==cu[21]&&cu[17] == cu[18] &&cu[7]==cu[8]&&cu[17]==cu[7]) return 1;
    }
    if(poi[0] == 2 &&poi[1] == 6){
        if(cu[11] == cu[12] &&cu[17]==cu[19]&&cu[12]==cu[17]&&cu[3]==cu[4]&&cu[18]==cu[20]&&cu[4]==cu[18]&&cu[1] == cu[2] &&cu[14]==cu[16]&&cu[2]==cu[14]&&cu[13] == cu[15] &&cu[9]==cu[10]&&cu[15]==cu[9]) return 1;
        if(cu[13] == cu[15] &&cu[3]==cu[4]&&cu[15]==cu[3]&&cu[1]==cu[2]&&cu[17]==cu[19]&&cu[2]==cu[17]&&cu[18] == cu[20] &&cu[9]==cu[10]&&cu[20]==cu[9]&&cu[11] == cu[12] &&cu[14]==cu[16]&&cu[12]==cu[14]) return 1;
    }
    if(poi[0] == 4 &&poi[1] == 5){
        if(cu[5] == cu[7] &&cu[10]==cu[12]&&cu[7]==cu[10]&&cu[3]==cu[1]&&cu[6]==cu[8]&&cu[1]==cu[6]&&cu[2] == cu[4] &&cu[22]==cu[24]&&cu[2]==cu[22]&&cu[9] == cu[11] &&cu[21]==cu[23]&&cu[9]==cu[21]) return 1;
        if(cu[2] == cu[4] &&cu[5]==cu[7]&&cu[4]==cu[5]&&cu[6]==cu[8]&&cu[9]==cu[11]&&cu[10]==cu[12]&&cu[22] == cu[24] &&cu[12]==cu[22]&&cu[21]==cu[23]&&cu[1] == cu[3] &&cu[1]==cu[21]&&cu[8]==cu[9]) return 1;
    }
    return 0;
}
int main(){
    for(int i=1;i<=24;i++){
        cin>>cu[i];
    }
    if(ju()) puts("YES");
    else puts("NO");
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值