codeforces887C(模拟)
来源:互联网 发布:2017编程语言薪资 编辑:程序博客网 时间:2024/06/15 21:18
原题:2016icpc西安现场赛B
题意:给你一个二阶魔方各个方块的颜色,问是否能够一步还原。
分析:简单的模拟一下就行了….总共就六种操作
AC代码:
#include <iostream>#include <cstdio>using namespace std;int a[7][5];int b[7][5];bool judge(){ int i=0; for(int j=1;j<=6;j++){ if(a[j][1]==a[j][2]&&a[j][2]==a[j][3]&&a[j][3]==a[j][4]){ i++; } } if(i==6){ return true; }else{ return false; }}void opera1(){ int t1,t2; t1=a[1][3]; t2=a[1][4]; a[1][3]=a[4][4]; a[1][4]=a[4][2]; a[4][2]=a[3][1]; a[4][4]=a[3][2]; a[3][1]=a[5][3]; a[3][2]=a[5][1]; a[5][1]=t1; a[5][3]=t2;}void opera2(){ int t1,t2; t1=a[5][1]; t2=a[5][3]; a[5][1]=a[3][2]; a[5][3]=a[3][1]; a[3][1]=a[4][2]; a[3][2]=a[4][4]; a[4][2]=a[1][3]; a[4][4]=a[1][4]; a[1][4]=t2; a[1][3]=t1;}void opera3(){ int t1,t2; t1=a[2][1]; t2=a[2][2]; a[2][1]=a[4][1]; a[2][2]=a[4][2]; a[4][1]=a[6][1]; a[4][2]=a[6][2]; a[6][1]=a[5][1]; a[6][2]=a[5][2]; a[5][1]=t1; a[5][2]=t2;}void opera4(){ int t1,t2; t1=a[2][1]; t2=a[2][2]; a[2][1]=a[5][1]; a[2][2]=a[5][2]; a[5][1]=a[6][1]; a[5][2]=a[6][2]; a[6][1]=a[4][1]; a[6][2]=a[4][2]; a[4][1]=t2; a[4][2]=t1;}void opera5(){ int t1,t2; t1=a[1][1]; t2=a[1][3]; a[1][1]=a[2][1]; a[1][3]=a[2][3]; a[2][1]=a[3][1]; a[2][3]=a[3][3]; a[3][1]=a[6][2]; a[3][3]=a[6][4]; a[6][2]=t1; a[6][4]=t2;}void opera6(){ int t1,t2; t1=a[1][1]; t2=a[1][3]; a[1][1]=a[6][2]; a[1][3]=a[6][4]; a[6][2]=a[3][1]; a[6][4]=a[3][3]; a[3][1]=a[2][1]; a[3][3]=a[2][3]; a[2][1]=t1; a[2][3]=t2;}int main(){ for(int i=1;i<=6;i++){ for(int j=1;j<=4;j++){ scanf("%d",&a[i][j]); b[i][j]=a[i][j]; } } if(judge()){ printf("NO\n"); return 0; } opera1(); if(judge()){ printf("YES\n"); return 0; } for(int i=1;i<=6;i++){ for(int j=1;j<=4;j++){ a[i][j]=b[i][j]; } } opera2(); if(judge()){ printf("YES\n"); return 0; } for(int i=1;i<=6;i++){ for(int j=1;j<=4;j++){ a[i][j]=b[i][j]; } } opera3(); if(judge()){ printf("YES\n"); return 0; } for(int i=1;i<=6;i++){ for(int j=1;j<=4;j++){ a[i][j]=b[i][j]; } } opera4(); if(judge()){ printf("YES\n"); return 0; } for(int i=1;i<=6;i++){ for(int j=1;j<=4;j++){ a[i][j]=b[i][j]; } } opera5(); if(judge()){ printf("YES\n"); return 0; } for(int i=1;i<=6;i++){ for(int j=1;j<=4;j++){ a[i][j]=b[i][j]; } } opera6(); if(judge()){ printf("YES\n"); return 0; } for(int i=1;i<=6;i++){ for(int j=1;j<=4;j++){ a[i][j]=b[i][j]; } } printf("NO\n"); return 0;}
阅读全文
0 0
- codeforces887C(模拟)
- Codeforces887C-Solution for Cube
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟:
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- redhat 5.3 x64 +虚拟机+MKL 10.0安装中的小问题
- 算法与算法设计的几大准则
- WinForm基础控件--分组类控件
- Java programming assignment newly learned stuff
- NIN-2013
- codeforces887C(模拟)
- 移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题
- 计算机网络重要机制(一)可靠数据传输
- iOS截屏
- 面向对象思想实现简易计算器
- 追一科技完成2060万美元B轮融资,AI公司靠垂直服务赚钱的好时候到了吗?
- 群贤毕至:微软亚洲研究院第二届院友会闭门会议
- Overcoming Type Erasure in matching 1
- 知识图谱的发展概述