UVA 253 Cube Painting (枚举)

1、根据骰子自身六面的特质,可以模拟出所有面顺序的情况,因为情况总数小..暴力是没有关系。第一种方法是枚举(暴力)

2、骰子的另一种情况是,即使再怎么旋转,对立面涂色的情况是不会变的,因而可以从这种方式检查(见水题分类,这里代码不做详解)

枚举

#include<cstdio>
#include<iostream>
#include<cstring>

using namespace std;

int flag;
char s[15],s1[7],s2[7],s3[7];
int d[7][7]={ {0,1,2,3,4,5},{1,5,2,3,0,4},{2,1,5,0,4,3},
				{3,1,0,5,4,2},{4,0,2,3,5,1},{5,4,2,3,1,0} };

int main()
{
	while(cin>>s) {
		flag=0;
		for(int i=0;i<12;i++) {
			if(i<6) {
				s1[i]=s[i];
			}else{
				s2[i-6]=s[i];
			}
		}
		
		s1[6]='\0';
		s2[6]='\0';
		
		for (int i=0;i<6;i++) {
			for (int j=0;j<6;j++) {
				s3[j]=s1[d[i][j]];
			}
			s3[6]='\0';
			if(strcmp(s3,s2)==0) {
				flag=1;
				break;
			}
			for(int j=0;j<3;j++) {
				char ch=s3[1];
				s3[1]=s3[2];
				s3[2]=s3[4];
				s3[4]=s3[3];
				s3[3]=ch;
				if (strcmp(s3, s2)==0) {
					flag=1;
					break;
				}
			}
			if(flag) break;
		}
		if(flag) {
			cout<<"TRUE"<<endl;
		}else{
			cout<<"FALSE"<<endl;
		}
	}
	return 0;
}

(待修改)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章