Lang:G++
Edit1234567891011121314151617181920212223242526#include<cstdio>int s[3][3],v[10],i,j,f[3][3];void dfs(int x,int y){if(x==2&&y==3){for(i=0;i<3;i++)if(s[i][0]+s[i][1]+s[i][2]!=15)return;for(i=0;i<3;i++)if(s[0][i]+s[1][i]+s[2][i]!=15)return;if(s[0][0]+s[1][1]+s[2][2]!=15)return;if(s[2][0]+s[1][1]+s[0][2]!=15)return;if(f[0][0])f[0][0]=-1;else for(i=0;i<3;i++)for(j=0;j<3;j++)f[i][j]=s[i][j];}else if(y==3)dfs(x+1,0);else if(s[x][y])dfs(x,y+1);else{for(int i=1;i<=9;i++)if(!v[i])v[i]=1,s[x][y]=i,dfs(x,y+1),v[i]=0;s[x][y]=0;}}int main(){scanf("%d%d%d%d%d%d%d%d%d",s[0],s[0]+1,s[0]+2,s[1],s[1]+1,s[1]+2,s[2],s[2]+1,s[2]+2);for(i=0;i<3;i++)for(j=0;j<3;j++)v[s[i][j]]=1;dfs(0,0);if(~f[0][0])for(i=0;i<3;i++,puts(""))for(j=0;j<3;j++)printf("%d ",f[i][j]);else puts("Too Many");}