提交时间:2024-01-23 15:33:35
运行 ID: 124732
#include<bits/stdc++.h> using namespace std; int a[5][5],ans=1e9,z[505],c[505],k[]={4,3,4,3,5,3,4,3,4},y[10][2]={{1,1},{1,2},{1,3},{2,1},{2,2},{2,3},{3,1},{3,2},{3,3}}; int kz[10][5]={{1,2,4,5,0},{1,2,3,0,0},{2,3,5,6,0},{1,4,7,0,0},{2,4,5,6,8},{3,6,9,0,0},{4,5,7,8,0},{7,8,9,0,0},{5,6,8,9,0}}; void dfs(int x,int yy){ if(x>=9){ for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) if(a[i][j]>0) return; if(yy<ans){ ans=yy; for(int i=1;i<=yy;i++) c[i]=z[i]; } return; } for(int i=0;i<4;i++){ for(int j=0;j<k[x];j++){ a[y[kz[x][j]-1][0]][y[kz[x][j]-1][1]]=(a[y[kz[x][j]-1][0]][y[kz[x][j]-1][1]]+i)%4; } for(int j=yy+1;j<=yy+i;j++) z[j]=x+1; dfs(x+1,yy+i); for(int j=0;j<k[x];j++){ a[y[kz[x][j]-1][0]][y[kz[x][j]-1][1]]=(a[y[kz[x][j]-1][0]][y[kz[x][j]-1][1]]+4-i)%4; } for(int j=yy+1;j<=yy+i;j++) z[j]=0; } } int main(){ for(int i=1;i<=3;i++){ for(int j=1;j<=3;j++) cin>>a[i][j]; } dfs(0,0); for(int i=1;i<=ans;i++) cout<<c[i]; return 0; }