就是耿直的搜索然后就rank最后一名了…
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
char ch=getchar();int f=0;
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') {f=f*10+(ch^48);ch=getchar();}
return f;
}
char s[17][17],now;int a[15][15],b[15][15],ans[15][15];
bool ac=0;
void dfs(int x,int y)
{
//cout<<x<<" "<<y<<endl;
for(int i=1;i<=9;i++)
{
if(ac) return;
ans[x][y]=i;
bool ok=1;
for(int j=1;j<=9;j++)
{
if((ans[x][j]==ans[x][y]&&j!=y)||(ans[j][y]==ans[x][y]&&x!=j))
{
ok=0;
break;
}
}
int lx=(x-1)/3*3+1,rx=lx+2,ly=(y-1)/3*3+1,ry=ly+2;
//cout<<ly<<" "<<ry<<endl;cout<<ok<<" ";
if(ok)
{
for(int j=lx;j<=x;j++)
{
for(int l=ly;l<=ry;l++)
{
if(ans[x][y]==ans[j][l]&&(x!=j||y!=l))
{
ok=0;
break;
}
}
if(!ok) break;
}
}
if(ok)
{
if(x!=1)
{
if((b[x-1][y]==1&&ans[x-1][y]<ans[x][y])||(b[x-1][y]==0&&ans[x-1][y]>ans[x][y]))
ok=0;
}
if(y!=1)
{
if((a[x][y-1]==1&&ans[x][y-1]<ans[x][y])||(a[x][y-1]==0&&ans[x][y-1]>ans[x][y]))
ok=0;
}
}
if(ok)
{
if(x==9&&y==9)
{
ac=1;
return;
}
else if(y==9)
{
dfs(x+1,1);
}
else dfs(x,y+1);
}
if(!ac)
ans[x][y]=0;
}
}
int transx(char x)
{
return (x=='>');
}
int transy(char x)
{
return (x=='v');
}
int main()
{
for(int i=1;i<=15;i++)
{
if(i==2||i==4||i==7||i==9||i==12||i==14)
{
for(int j=1;j<=9;j++)
cin>>s[i][j];
}
else
{
for(int j=1;j<=6;j++)
cin>>s[i][j];
}
}
for(int i=1;i<=15;i++)
{
if(s[i][1]=='>'||s[i][1]=='<')
{
now++;
a[now][1]=transx(s[i][1]);
a[now][2]=transx(s[i][2]);
a[now][3]=2;
a[now][4]=transx(s[i][3]);
a[now][5]=transx(s[i][4]);
a[now][6]=2;
a[now][7]=transx(s[i][5]);
a[now][8]=transx(s[i][6]);
a[now][9]=2;
}
}
now=0;
for(int i=1;i<=15;i++)
{
if(s[i][1]=='v'||s[i][1]=='^')
{
now++;
if(now%3==0)
{
for(int j=1;j<=9;j++) b[now][j]=2;now++;
}
for(int j=1;j<=9;j++) b[now][j]=transy(s[i][j]);
}
}
for(int i=1;i<=9;i++) b[9][i]=2;
/*for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
printf("%d ",a[i][j]);
printf("\n");
}*/
dfs(1,1);
//cout<<ac;
for(int i=1;i<=9;i++)
{
for(int j=1;j<=8;j++)
{
printf("%d ",ans[i][j]);
}
printf("%d",ans[i][9]);
puts("");
}
}