样例出错求助
查看原帖
样例出错求助
663195
Z_AuTwT楼主2024/2/24 12:12
B
BF
BFF
BFCH
EFCHH
ECCHHC
EEECCCI
EEEHHIIK
ELHHHIAKK
ELLLLIAAKK

我的代码输出这个,好像也没问题。

代码:

#include<bits/stdc++.h>
using namespace std;
bool book[11][11],bj[13];
char mat[11][11];
int nxt1[4][3][2]={{0,0,1,0,1,-1},{0,0,1,0,1,1},{0,0,0,1,1,1},{0,0,0,1,1,0}};
int nxt2[2][4][2]={{0,0,0,1,0,2,0,3},{0,0,1,0,2,0,3,0}};
int nxt3[8][4][2]={{0,0,1,0,2,0,2,1},{0,0,1,0,2,0,2,-1},{0,0,0,1,1,1,2,1},{0,0,1,0,2,0,0,1},{0,0,0,1,0,2,1,0},{0,0,0,1,0,2,1,2},{0,0,1,0,1,1,1,2},{0,0,1,0,1,-1,1,-2}};
int nxt4[1][4][2]={{0,0,0,1,1,0,1,1}};
int nxt5[4][5][2]={{0,0,1,0,2,0,2,1,2,2},{0,0,1,0,2,0,2,-1,2,-2},{0,0,0,1,0,2,1,2,2,2},{0,0,1,0,2,0,0,1,0,2}};
int nxt6[8][5][2]={{0,0,1,0,1,1,2,0,3,0},{0,0,1,0,2,0,3,0,2,-1},{0,0,0,1,0,2,0,3,1,2},{0,0,0,1,-1,1,0,2,0,3},{0,0,0,1,1,1,0,2,0,3},{0,0,1,0,2,0,2,1,3,0},{0,0,0,1,0,2,-1,2,0,3},{0,0,0,1,-1,1,1,1,2,1}};
int nxt7[4][5][2]={{0,0,1,0,0,1,0,2,1,2},{0,0,0,1,1,0,2,0,2,1},{0,0,1,0,1,1,1,2,0,2},{0,0,0,1,1,1,2,1,2,0}};
int nxt8[8][5][2]={{0,0,1,0,0,1,1,1,-1,1},{0,0,0,1,1,0,1,1,2,0},{0,0,0,1,0,2,1,1,1,2},{0,0,1,0,0,1,1,1,1,2},{0,0,0,1,0,2,1,0,1,1},{0,0,0,1,1,0,1,1,2,1},{0,0,1,0,1,-1,1,1,0,1},{0,0,1,0,1,1,2,0,2,1}};
int nxt9[8][5][2]={{0,0,1,0,2,0,2,1,3,1},{0,0,1,0,1,1,2,1,3,1},{0,0,0,1,0,2,-1,2,-1,3},{0,0,1,0,1,-1,0,1,0,2},{0,0,0,1,0,2,1,2,1,3},{0,0,1,0,2,0,2,-1,3,-1},{0,0,0,1,1,1,1,2,1,3},{0,0,1,0,2,0,0,1,-1,1}};
int nxt10[1][5][2]={{0,0,-1,0,0,-1,1,0,0,1}};
int nxt11[4][5][2]={{0,0,1,0,1,1,2,1,2,2},{0,0,0,1,1,0,1,-1,2,-1},{0,0,1,0,1,-1,2,-1,2,-2},{0,0,0,1,1,1,1,2,2,2}};
int nxt12[8][5][2]={{0,0,1,0,2,0,3,0,3,-1},{0,0,1,0,2,0,3,0,0,1},{0,0,0,1,0,2,0,3,1,3},{0,0,1,0,1,1,1,2,1,3},{0,0,0,1,0,2,0,3,1,0},{0,0,0,1,1,1,2,1,3,1},{0,0,0,1,0,2,0,3,-1,3},{0,0,1,0,2,0,3,0,3,1}};
void dfs(){
//	for(int i=1;i<=10;i++){
//		for(int j=1;j<=i;j++){
//			cout<<mat[i][j];
//		}
//		cout<<"\n";
//	}
//	cout<<"\n";
//	_sleep(1000);
	if((double)clock()/CLOCKS_PER_SEC>0.9){
		cout<<"No solution";
		exit(0);
	}
	bool c=false;
	for(int i=1;i<=10;i++){
		for(int j=1;j<=i;j++){
			if(mat[i][j]=='.'){
				c=true;
				bool flag=false;
				/*A*/
				if(!bj[1])
					for(int i1=0;i1<4;i1++){
						bool flag1=true;
						for(int j1=0;j1<3;j1++){
							int nx=i+nxt1[i1][j1][0],ny=j+nxt1[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<3;j1++){
								int nx=i+nxt1[i1][j1][0],ny=j+nxt1[i1][j1][1];
								mat[nx][ny]='A';
							}
							bj[1]=true;
							dfs();
							for(int j1=0;j1<3;j1++){
								int nx=i+nxt1[i1][j1][0],ny=j+nxt1[i1][j1][1];
								mat[nx][ny]='.';
							}
							bj[1]=false;
						}
					}
				/*B*/
				if(!bj[2])
					for(int i1=0;i1<2;i1++){
						bool flag1=true;
						for(int j1=0;j1<4;j1++){
							int nx=i+nxt2[i1][j1][0],ny=j+nxt2[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							bj[2]=true;
							for(int j1=0;j1<4;j1++){
								int nx=i+nxt2[i1][j1][0],ny=j+nxt2[i1][j1][1];
								mat[nx][ny]='B';
							}
							dfs();
							bj[2]=false;
							for(int j1=0;j1<4;j1++){
								int nx=i+nxt2[i1][j1][0],ny=j+nxt2[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*C*/
				if(!bj[3])
					for(int i1=0;i1<8;i1++){
						bool flag1=true;
						for(int j1=0;j1<4;j1++){
							int nx=i+nxt3[i1][j1][0],ny=j+nxt3[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<4;j1++){
								int nx=i+nxt3[i1][j1][0],ny=j+nxt3[i1][j1][1];
								mat[nx][ny]='C';
							}
							bj[3]=true;
							dfs();
							bj[3]=false;
							for(int j1=0;j1<4;j1++){
								int nx=i+nxt3[i1][j1][0],ny=j+nxt3[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*D*/
				if(!bj[4])
					for(int i1=0;i1<1;i1++){
						bool flag1=true;
						for(int j1=0;j1<4;j1++){
							int nx=i+nxt4[i1][j1][0],ny=j+nxt4[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<4;j1++){
								int nx=i+nxt4[i1][j1][0],ny=j+nxt4[i1][j1][1];
								mat[nx][ny]='D';
							}
							bj[4]=true;
							dfs();
							bj[4]=false;
							for(int j1=0;j1<4;j1++){
								int nx=i+nxt4[i1][j1][0],ny=j+nxt4[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*E*/
				if(!bj[5])
					for(int i1=0;i1<4;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt5[i1][j1][0],ny=j+nxt5[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt5[i1][j1][0],ny=j+nxt5[i1][j1][1];
								mat[nx][ny]='E';
							}
							bj[5]=true;
							dfs();
							bj[5]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt5[i1][j1][0],ny=j+nxt5[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*F*/
				if(!bj[6])
					for(int i1=0;i1<8;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt6[i1][j1][0],ny=j+nxt6[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt6[i1][j1][0],ny=j+nxt6[i1][j1][1];
								mat[nx][ny]='F';
							}
							bj[6]=true;
							dfs();
							bj[6]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt6[i1][j1][0],ny=j+nxt6[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*G*/
				if(!bj[7])
					for(int i1=0;i1<4;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt7[i1][j1][0],ny=j+nxt7[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt7[i1][j1][0],ny=j+nxt7[i1][j1][1];
								mat[nx][ny]='G';
							}
							bj[7]=true;
							dfs();
							bj[7]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt7[i1][j1][0],ny=j+nxt7[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*H*/
				if(!bj[8])
					for(int i1=0;i1<8;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt8[i1][j1][0],ny=j+nxt8[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt8[i1][j1][0],ny=j+nxt8[i1][j1][1];
								mat[nx][ny]='H';
							}
							bj[8]=true;
							dfs();
							bj[8]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt8[i1][j1][0],ny=j+nxt8[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*I*/
				if(!bj[9])
					for(int i1=0;i1<8;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt9[i1][j1][0],ny=j+nxt9[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt9[i1][j1][0],ny=j+nxt9[i1][j1][1];
								mat[nx][ny]='I';
							}
							bj[9]=true;
							dfs();
							bj[9]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt9[i1][j1][0],ny=j+nxt9[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*J*/
				if(!bj[10])
					for(int i1=0;i1<1;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt10[i1][j1][0],ny=j+nxt10[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt10[i1][j1][0],ny=j+nxt10[i1][j1][1];
								mat[nx][ny]='J';
							}
							bj[10]=true;
							dfs();
							bj[10]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt10[i1][j1][0],ny=j+nxt10[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*K*/
				if(!bj[11])
					for(int i1=0;i1<4;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt11[i1][j1][0],ny=j+nxt11[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt11[i1][j1][0],ny=j+nxt11[i1][j1][1];
								mat[nx][ny]='K';
							}
							bj[11]=true;
							dfs();
							bj[11]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt11[i1][j1][0],ny=j+nxt11[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				/*L*/
				if(!bj[12])
					for(int i1=0;i1<8;i1++){
						bool flag1=true;
						for(int j1=0;j1<5;j1++){
							int nx=i+nxt12[i1][j1][0],ny=j+nxt12[i1][j1][1];
							if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
								flag1=false;
								break;
							}
						}
						if(flag1==true){
							flag=true;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt12[i1][j1][0],ny=j+nxt12[i1][j1][1];
								mat[nx][ny]='L';
							}
							bj[12]=true;
							dfs();
							bj[12]=false;
							for(int j1=0;j1<5;j1++){
								int nx=i+nxt12[i1][j1][0],ny=j+nxt12[i1][j1][1];
								mat[nx][ny]='.';
							}
						}
					}
				if(flag==false){
					return;
				}
			}
		}
	}
 	if(c==false){
		for(int i=1;i<=10;i++){
			for(int j=1;j<=i;j++){
				cout<<mat[i][j];
			}
			cout<<"\n";
		}
 		exit(0);
 	}
	return;
}
int main(){
	for(int i=1;i<=10;i++){
		for(int j=1;j<=i;j++){
			cin>>mat[i][j];
			book[i][j]=true;
		}
	}
	dfs();
	cout<<"No solution";
}

求助

2024/2/24 12:12
加载中...