不懂为什么 WA,求助
查看原帖
不懂为什么 WA,求助
639085
SSqwq_楼主2023/10/17 14:55

RT,思路正确 + 本地 AC + 洛谷 IDE AC,全 WA,都是

Wrong Answer.wrong answer Too long on line 5.

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[5][5];
bool check(){
	if(a[1][1]+a[1][4]+a[4][1]+a[4][4]!=34&&a[1][1]+a[1][4]+a[4][1]+a[4][4]<64)return false;
	if(a[1][1]+a[1][2]+a[2][1]+a[2][2]!=34&&a[1][1]+a[1][2]+a[2][1]+a[2][2]<64)return false;
	if(a[1][3]+a[1][4]+a[2][3]+a[2][4]!=34&&a[1][3]+a[1][4]+a[2][3]+a[2][4]<64)return false;
	if(a[3][1]+a[3][2]+a[4][1]+a[4][2]!=34&&a[3][1]+a[3][2]+a[4][1]+a[4][2]<64)return false;
	if(a[3][3]+a[3][4]+a[4][3]+a[4][4]!=34&&a[3][3]+a[3][4]+a[4][3]+a[4][4]<64)return false;
	if(a[2][2]+a[2][3]+a[3][2]+a[3][3]!=34&&a[2][2]+a[2][3]+a[3][2]+a[3][3]<64)return false;
	for(int i=1;i<=4;++i){
		if(a[i][1]+a[i][2]+a[i][3]+a[i][4]!=34&&a[i][1]+a[i][2]+a[i][3]+a[i][4]<64)return false;
	}
	for(int j=1;j<=4;++j){
		if(a[1][j]+a[2][j]+a[3][j]+a[4][j]!=34&&a[1][j]+a[2][j]+a[3][j]+a[4][j]<64)return false;
	}
	if(a[1][1]+a[2][2]+a[3][3]+a[4][4]!=34&&a[1][1]+a[2][2]+a[3][3]+a[4][4]<64)return false;
	if(a[1][4]+a[2][3]+a[3][2]+a[4][1]!=34&&a[1][4]+a[2][3]+a[3][2]+a[4][1]<64)return false;
	return true;
}
int used[17];
void dfs(int x,int y){
	if(x==5&&y==1){
		if(check()){
			for(int i=1;i<=4;++i){
				for(int j=1;j<=4;++j){
					cout<<a[i][j];
					if(j<4)cout<<" "; 
				}
				cout<<endl;
			}
		}
		return;
	}
	if(a[x][y]==1){
		if(y<4){
			dfs(x,y+1);
		}
		else{
			dfs(x+1,1);
		}
		return;
	}
	for(int i=2;i<=16;++i){
		if(!used[i]){
			used[i]=1;
			a[x][y]=i;
			if(check()){
				if(y<4){
					dfs(x,y+1);
				}
				else{
					dfs(x+1,1);
				}
			}
			a[x][y]=19260817;
			used[i]=0;
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int u,v;
	cin>>u>>v;
	used[1]=1;
	for(int i=1;i<=4;++i){
		for(int j=1;j<=4;++j){
			a[i][j]=19260817;
		}
	}
	a[u][v]=1;
	dfs(1,1);
	return 0;
}
2023/10/17 14:55
加载中...