60分求调
查看原帖
60分求调
564864
TheCedar楼主2022/5/4 08:13
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
string strs[7];
bool filled[7],flag;
char maps[4][4];
void fillin(int line,int str) {
	for(int i=1;i<=3;i++) 
		maps[line][i]=(char)(strs[str][i-1]);
} 
bool equal(string x,char y[]) {
	for(int i=0;i<3;i++) if(x[i]!=y[i]) return false;
	return true;
}
bool check(int row) {
	char tmp[4];
	if(row==4) flag=true;
	for(int i=1;i<=3;i++)
		tmp[i-1]=maps[i][row];
	for(int i=1;i<=6;i++) 
		if(equal(strs[i],tmp)&&!filled[i]) 
			check(row+1);
	if(flag) return true;
	else return false;
}
void dfs(int line) {
	if(line==4) {
		if(check(1)) {
			for(int i=1;i<=3;i++) {
				for(int j=1;j<=3;j++)
					printf("%c",maps[i][j]);
				printf("\n");
			}
			exit(0);
		}
		else return;
	}
	else {
		for(int i=1;i<=6;i++) {
			if(!filled[i]) {
				fillin(line,i);
				filled[i]=true;
				dfs(line+1);
				filled[i]=false;
			}
		}
	}
}
int main() {
	memset(maps,0,sizeof(maps));
	memset(filled,false,sizeof(filled)); 
	for(int i=1;i<=6;i++) cin>>strs[i];
	dfs(1);
	printf("0");
	return 0;
}

样例过了,WA 4个点

2022/5/4 08:13
加载中...