棋盘问题 (dfs) POJ
来源:互联网 发布:js闭包的好处 编辑:程序博客网 时间:2024/05/16 12:40
题目大意:给一个N*N的区域,和M个棋子,询问最后有多少种摆的方法,其中每个棋子不能放在同一行和同一列。
思路:对每一行进行dfs,dfs时使用book数组(双重标记)标记。
#include<stdio.h>#include<string.h> #define N 9char z[N][N];//开空间存储棋盘int num;//计算总数int bookh[N];//标记横行是否有过棋子int bookl[N];//标记纵行是否有过棋子int n,k;void dfs(int a,int m);int main(void){while(scanf("%d%d",&n,&k),n!=-1){memset(bookh,0,sizeof(bookh));memset(bookl,0,sizeof(bookl));num=0;getchar();int i;for(i=0;i<n;i++) gets(z[i]);for(i=0;i<=n-k;i++){//优化,因为只有前n-k行,才能存下k个棋子dfs(i,k);//dfs每一行}printf("%d\n",num);}return 0;}void dfs(int a,int m){if(m==0) {//num++;return ;}int i;for(i=0;i<n;i++){if(z[a][i]=='#'&&bookh[a]==0&&bookl[i]==0){//找到这一列中可以放置棋子的点if(m==1) {num++;//return ;}bookh[a]=1;bookl[i]=1;int j; for(j=a+1;j<=n-m+1;j++){//寻找下一行来放置棋子dfs(j,m-1);}bookh[a]=0;bookl[i]=0;}}return ;}
0 0
- POJ 棋盘问题 DFS
- 棋盘问题 (dfs) POJ
- POJ 1321 棋盘问题(棋盘DFS)
- POJ 1321 棋盘问题 DFS
- POJ 1321 棋盘问题 (dfs)
- poj 1321 -- 棋盘问题 (DFS)
- poj 1321 :棋盘问题 (dfs)
- poj 1321 棋盘问题(DFS)
- POJ 1321 棋盘问题(DFS)
- poj 1321 棋盘问题 【DFS】
- poj 1321 棋盘问题 (dfs)
- 棋盘问题 POJ 1321 DFS
- POJ 1321 棋盘问题 (DFS)
- POJ 1321-棋盘问题(dfs)
- POJ 1321 棋盘问题(DFS)
- DFS-POJ-1321-棋盘问题
- POJ 1321--棋盘问题【DFS】
- poj 1321 棋盘问题 (dfs)
- Lowest Common Multiple Plus
- 如何解决win8环境下执行qlmgmproviderxpsp2up.mof文件
- 开源推荐系统整理
- 5-6 列出连通集 (25分)
- Thrift 指导文档 [0.9.2]
- 棋盘问题 (dfs) POJ
- 解决Android当中GridView的Item子控件中有ImageView图片大小不一致问题
- 使用mybatis-generator代码生成器实例
- Android解决RecyclerView嵌套的RecyclerView或CardView条目显示不全和宽度不能铺满
- 社群系统 ThinkSNS+ 0.7.1 版本研发播报
- Android studio 2.4 支持java 8 特性
- 远程桌面关闭后如何恢复原会话连接
- 详解 js 闭包
- Fragment的导包问题