2013年11月12日 星期二

[UVA] 167 - The Sultan's Successors


#include<stdio.h>
#include<string.h>
int s[10][10]={0},d[10]={0},L[20]={0},R[20]={0},ans=0;
void dfs(int v,int add){
    int i;
    if(v==8){
        if(add>ans) ans=add;
        return;
    }
    for(i=0;i<8;i++){
        if(d[i]==0 && L[v-i+10]==0 && R[v+i]==0){
            d[i]=1,L[v-i+10]=1,R[v+i]=1;
            dfs(v+1,add+s[v][i]);
            d[i]=0,L[v-i+10]=0,R[v+i]=0;
        }
    }
}
int main(){
    int t,i,j;
    scanf("%d",&t);
    while(t--){
        ans=0;
        for(i=0;i<8;i++)
            for(j=0;j<8;j++)
                scanf("%d",&s[i][j]);
        dfs(0,0);
        printf("%5d\n",ans);
    }
}

沒有留言:

張貼留言