poj 1321 棋盘问题

来源:互联网 发布:php erp 编辑:程序博客网 时间:2024/06/06 04:08

八皇后问题,用dfsj即可。

#include <iostream>#include<stdio.h>#include<cstring>using namespace std;int a[10][10];int visit[10];int n,k,sum;__int64 ans;void dfs(int x){    int i,j;for(i=x+1;i<n;i++)  for(j=0;j<n;j++){    if(a[i][j]&&visit[j]==0){      visit[j]=1;      sum++;      if(sum==k){      ans++;      }      else dfs(i);      sum--;      visit[j]=0;    }  }}int main(){ char ch;int i,j;   while(scanf("%d %d",&n,&k)){     if(n==-1&&k==-1) break;       memset(visit,0,sizeof(visit));     ans=0;     for(i=0;i<n;i++){       getchar();       for(j=0;j<n;j++){         scanf("%c",&ch);         if(ch=='#')           a[i][j]=1;         else a[i][j]=0;       }     }       for(i=0;i<=n-k;i++)         for(j=0;j<n;j++){           if(a[i][j]){             visit[j]=1;             sum=1;             if(k==1){             ans++;             }             else {                 dfs(i);                 }visit[j]=0;                 sum--;           }         }     printf("%I64d\n",ans);   }    return 0;}


原创粉丝点击