张乐凡
(string dp[100005])
1
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;
}