简单的八皇后
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//using namespace std;
int queen[8];
int a[8][8];
int ans;
void dfs(int cur, int score)
{
if (cur == 8)
{
if (score > ans)ans = score;
return;
}
int i, j;
for (i = 0; i < 8; i++)
{
for (j = 0; j < cur; j++)
if (queen[j] == i ||abs(j - cur) == abs( queen[j] - i) )break;
if ( j == cur)
{
queen[cur] = i;
dfs(cur + 1, score + a[cur][i]);
}
}
}
int main()
{
int k;
scanf("%d", &k);
// FILE *fp = fopen("in.txt", "r");
while (k--)
{
for (int i = 0; i <8; i++)
for (int j =0; j < 8; j++)
scanf("%d", &a[i][j]);
//for (int i = 0; i <8; i++)printf ("%d ", a[i][0]);
ans = -1;
memset(queen, 0, sizeof(queen));
dfs(0, 0);
printf ("%5d\n", ans);
}
// getchar();
// getchar();
return 0;
}