hiho week 135 register

Ended

Participants:178

Verdict:Accepted
Score:100 / 100
Submitted:2017-01-28 22:28:07

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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");
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX