40分!哪错了?
查看原帖
40分!哪错了?
1127070
yangyi11楼主2024/8/5 13:49
#include<bits/stdc++.h>
using namespace std;
int xx,yy,a[5][5];
int f[17]={0,1};
bool pd(int x,int y){
	if(x>1||x==1&&y==4){
		if(a[1][1]+a[1][2]+a[1][3]+a[1][4]!=34){
			return 0;
		}
	}
	if(x>2||x==2&&y==4){
		if(a[2][1]+a[2][2]+a[2][3]+a[2][4]!=34){
			return 0;
		}
	}
	if(x>3||x==3&&y==4){
		if(a[3][1]+a[3][2]+a[3][3]+a[3][4]!=34){
			return 0;
		}
	}
	if(x==4&&y==4){
		if(a[4][1]+a[4][2]+a[4][3]+a[4][4]!=34){
			return 0;
		}
	}
	if(x==4){
		if(a[1][1]+a[2][1]+a[3][1]+a[4][1]!=34){
			return 0;
		}
	}
	if(x==4&&y>1){
		if(a[1][2]+a[2][2]+a[3][2]+a[4][2]!=34){
			return 0;
		}
	}
	if(x==4&&y>2){
		if(a[1][3]+a[2][3]+a[3][3]+a[4][3]!=34){
			return 0;
		}
	}
	if(x==4&&y==4){
		if(a[1][4]+a[2][4]+a[3][4]+a[4][4]!=34){
			return 0;
		}
	}
	if(x==4){
		if(a[4][1]+a[3][2]+a[2][3]+a[1][4]!=34){
			return 0;
		}
	}
	if(x==4&&y==4){
		if(a[1][1]+a[2][2]+a[3][3]+a[4][4]!=34){
			return 0;
		}
	}
	if(x==4&&y==4){
		if(a[1][1]+a[1][4]+a[4][1]+a[4][4]!=34){
			return 0;
		}
	}
	if(x==4||x==3&&y>=3){
		if(a[2][2]+a[2][3]+a[3][2]+a[3][3]!=34){
			return 0;
		}
	}
	if(x>2||x==2&&y>=2){
		if(a[1][1]+a[1][2]+a[2][1]+a[2][2]!=34){
			return 0;
		}
	}
	if(x>2||x==2&&y==4){
		if(a[1][3]+a[1][4]+a[2][3]+a[2][4]!=34){
			return 0;
		}
	}
	if(x==4&&y>=2){
		if(a[1][4]+a[1][3]+a[2][3]+a[2][4]!=34){
			return 0;
		}
	}
	if(x==4&&y==4){
		if(a[3][3]+a[3][4]+a[4][3]+a[4][4]!=34){
			return 0;
		}
	}
	return 1;
}
void dfs(int m,int n){
	if(m==5&&n==1){
		for(int i=1;i<=4;i++){
			for(int j=1;j<=4;j++){
				printf("%d ",a[i][j]);
			} 
			putchar('\n');
		}
		putchar('\n');
		return;
	}else{
		if(a[m][n]&&pd(m,n)){	
			if(n==4){
				dfs(m+1,1);
			}else{
				dfs(m,n+1); 
			}
		}else{
			for(int k=2;k<=16;k++){
				if(f[k]==0){
					f[k]=1;
					a[m][n]=k;
					if(pd(m,n)){
						if(n==4){
							dfs(m+1,1);
						}else{
							dfs(m,n+1); 
						}
					}
					f[k]=0;
					a[m][n]=0;
				}
			}
		}
	}
}
int main(){
	cin>>xx>>yy;
	a[xx][yy]=1;
	dfs(1,1);
	return 0;
}
2024/8/5 13:49
加载中...