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;
}

(待修改)

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