之前几道题都做不出来
#include<stdio.h>
#include<string.h>
int board[8][8];
int vis[3][20];
int max;
void search(int cur,int sum)
{
if(cur == 8)
{
if(sum>max)
max = sum;
return;
}
for(int i = 0; i < 8;i++)
{
if(vis[0][i]==0 && vis[1][cur+i]==0 && vis[2][cur-i+8]==0)
{
vis[0][i]=1,vis[1][cur+i]=1,vis[2][cur-i+8]=1;
search(cur+1,sum + board[cur][i]);
vis[0][i]=0,vis[1][cur+i]=0,vis[2][cur-i+8]=0;
}
}
}
int main()
{
//
freopen("input.txt","r",stdin);
int k;
scanf("%d",&k);
while(k--)
{
memset(vis,0,sizeof(vis));
for(int i = 0; i < 8;i++)
{
for(int j = 0; j < 8;j++)
scanf("%d",&board[i][j]);
}
max =0;
search(0,0);
printf("%5d\n",max);
}
}