首页 > 其他 > 详细

POJ 1321 棋盘问题

时间:2018-05-22 22:00:48      阅读:183      评论:0      收藏:0      [点我收藏+]
#include<cstdio> #include<cstring> using namespace std; char chess[10][10]; bool book[10];//记录此列有无被放置棋子 int n,k,num,way; void dfs(int row){ if(num==k){ way++; return; } if(row>=n) return;//从0开始 for(int col=0;col<n;col++){ if(!book[col]&&chess[row][col]==‘#‘){ num++; book[col]=true; dfs(row+1); book[col]=false;//此时此节点的枝叶已经被搜索完毕,重置 num--; } } dfs(row+1);//逐行放置棋子,遍历图表 } int main(){ while(~scanf("%d %d",&n,&k)&&n!=-1){ way=num=0; memset(book,false,sizeof(book)); memset(chess,‘.‘,sizeof(chess)); for(int i=0;i<n;i++) scanf("%s",&chess[i]); dfs(0); printf("%d\n",way); } return 0; }

POJ 1321 棋盘问题

原文:http://blog.51cto.com/13688928/2119235

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!