poj 1321 棋盘问题

来源:互联网 发布:seo教程 百度云 编辑:程序博客网 时间:2024/06/06 10:51


点击打开链接


题意就是给一个棋盘,这个棋盘每个有不可使用的区域。

问,给你k个棋子,问你有多少种放法。

每放一个棋子,该棋子所在行,所在列都不能有其他棋子。


八皇后问题。

深搜一发,标记好,一行一行搜。


//#include <bits/stdc++.h>#include <iostream>#include <stdio.h>#include <string.h>#define LL long longusing namespace std;const int maxn=10+5;char mmap[maxn][maxn];int v[maxn];int ans,n,k;void dfs(int x,int cnt){    if(cnt==0){        ans++;  return;    }    for(int i=x;i<=n;i++)        for(int j=1;j<=n;j++)            if(mmap[i][j]=='#'&&!v[j]){                v[j]=1;                dfs(i+1,cnt-1);                v[j]=0;            }}int main(){    while(scanf("%d %d",&n,&k)){        if(n==-1&&k==-1) break;        memset(v,0,sizeof(v));        for(int i=1;i<=n;i++)            scanf("%s",mmap[i]+1);        ans=0;        dfs(1,k);        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击