有没有大佬帮我调一下

P1274

#include<bits/stdc++.h>
#define int long long
using namespace std;
int i,j,a[5][5];
bool b[20];
int sum1(int n,int m){
	return a[n][n]+a[n][m]+a[m][n]+a[m][m];
}
bool check(){
	if(sum1(1,4)!=34) return 0;
	if(sum1(2,3)!=34) return 0;
	if(sum1(1,2)!=34) return 0;
	if(sum1(3,4)!=34) return 0;
	if(a[1][3]+a[1][4]+a[2][3]+a[2][4]!=34) return 0;
	if(a[3][1]+a[3][2]+a[4][1]+a[4][2]!=34) return 0;
	int sum=0;
	for(int i=1;i<=4;i++){
		sum=0;
		for(int j=1;j<=4;j++){
			sum+=a[i][j];
		}
		if(sum!=34) return 0;
	}
	for(int i=1;i<=4;i++){
		sum=0;
		for(int j=1;j<=4;j++){
			sum+=a[j][i];
		}
		if(sum!=34) return 0;
	}
	sum=0;
	for(int i=1;i<=4;i++) sum+=a[i][i];
	if(sum!=34) return 0;
	sum=0;
	for(int i=1;i<=4;i++) sum+=a[5-i][i];
	if(sum!=34) return 0;
	return 1;		 
}
//int t;
void dfs(int x,int y){
//	t++;
//	if(t<=500){
//		cout<<x<<" "<<y<<endl;
//		for(int i=1;i<=4;i++){
//			for(int j=1;j<=4;j++){
//				cout<<a[i][j]<<" ";
//			}
//			cout<<endl;
//		}
//	}
	if(x>4){
		if(check()){
			for(int i=1;i<=4;i++){
				for(int j=1;j<=4;j++){
					cout<<a[i][j]<<" ";
				}
				cout<<endl;
			}
			cout<<endl;
		}
		return ;
	}else if(x==i&&y==j){
		if(y==4) dfs(x+1,1);
		else dfs(x,y+1);
	}else{
		for(int i=2;i<=16;i++){
			if(b[i]==0){
				a[x][y]=i,b[i]=1;
				if(y==4){
					int sum=0;
					for(int j=1;j<=4;j++){
						sum+=a[x][j];
					}
					if(sum!=34){
						b[i]=0;
						continue;
					}
					dfs(x+1,1);
				}
				if(x==2&&y==2){
					if(sum1(1,2)!=34){
						b[i]=0;
						continue;						
					}
				}else if(x==3&&y==3){
					if(sum1(2,3)!=34){
						b[i]=0;
						continue;						
					}
				}
				else dfs(x,y+1);
				b[i]=0;
			}
		}
	}
}
signed main(){
	cin>>i>>j;
	a[i][j]=1;
	dfs(1,1);
	return 0;
}

已经AC了
@Dalton 关贴