Description

在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。

Input

输入含有多组测试数据。 
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 
当为-1 -1时表示输入结束。 
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。 

Output

对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。

Sample Input

2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1

Sample Output

2
1

 1 #include<cstdio>
 2 #include<cstring>
 3 int n,k;
 4 char mapp[20][20];
 5 bool vis[20];
 6 int ans=0;
 7 void dfs(int x,int cur)
 8 {
 9     if(cur==k)//完全填入一次加1
10     {
11         ans++;
12     }
13     for(int k=x;k<n;k++)//选择填入第几行的棋盘
14     {
15         for(int i=0;i<n;i++)//看哪一个是棋盘
16         {
17             if(mapp[k][i]=='#' && vis[i]==false)//回溯
18             {
19                 vis[i]=true;
20                 dfs(k+1,cur+1);
21                 vis[i]=false;
22             }
23         }
24     }
25
26 }
27 int main()
28 {
29     while(scanf("%d%d",&n,&k)!=EOF&&n!=-1&&k!=-1)
30     {
31         ans=0;
32         memset(vis,false,sizeof(vis));
33         for(int i=0;i<n;i++)
34             scanf("%s",mapp[i]);
35         dfs(0,0);
36         printf("%d\n",ans);
37     }
38     return 0;
39 } 

View Code

转载于:https://www.cnblogs.com/-xiangyang/p/9392841.html

POJ1321(棋盘问题)相关推荐

  1. 【POJ1321棋盘问题】【poj2251Dungeon Master】【poj3278Catch That Cow】【poj1426Find The Multi】

    POJ1321棋盘问题 题意:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k ...

  2. POJ1321 棋盘问题(DFS)

    深度搜索,但是要注意搜索的方式: 本文给出两份代码,一份是AC代码,一份是超时的,你们感受下. 从第一行开始,对于每一行,搜索整行,如果有'#',标记,然后,则搜索下一行. AC代码: /*POJ13 ...

  3. POJ1321 棋盘问题

                                                                                            棋盘问题 Time Li ...

  4. poj1321棋盘问题

    题目链接 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆 ...

  5. POJ1321 Bailian1321 棋盘问题【DFS】

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 52525   Accepted: 25387 Descriptio ...

  6. 简单搜索 poj1321

    poj1321 棋盘问题 #pragma warning(disable:4996) #include<iostream> #include<string> #include& ...

  7. ACM题集以及各种总结大全(转)

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  8. CCF认证训练行动路线图

    通过CCF认证的训练题选自三个方面,一是CCF认证试题,二是使用北大百练的练习题等等,三是ACM-ICPC的练习题. CCF认证的试题是必须练习的,通过CCF试题的练习有助于了解试题风格特点.然而CC ...

  9. 《程序设计技术》课程辅助学习资料

    本文档提供课程相关的辅助学习资料. 阅读程序是提高程序设计水平的最为有效的方法,<程序设计技术>课程至少应该阅读后面提供链接博文中的基础部分.能够阅读完基础部分的博文,则可以给课程学习奠定 ...

最新文章

  1. 数据库课本SQL第三章答案
  2. 华为鸿蒙产业链股票,华为P40或用鸿蒙 华为产业链概念股一览
  3. iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)
  4. SecureCRT无法登录Ubuntu
  5. php gearman 扩展,Ubuntu 12.04 安装 gearman 以及php扩展安装脚本
  6. 使用Html.DropDownList
  7. oracle 视图带条件,Oracle视图可以进行DML操作的条件
  8. java 调用plc程序_从老师傅那里偷学来的PLC宝贵经验!
  9. extjs office java_Extjs使用(最最基础)
  10. 微信小程序云开发表单使用 name的形式提交后如何清空输入内容
  11. 倾斜摄影三维建模过程和项目费用
  12. kali安装百度网盘客户端
  13. Google究竟怎么扣税,如何结算?你想知道的都在这里了
  14. java跳转页面_几种方式实现Javaweb页面跳转
  15. 《简约至上:交互式设计四策略》读书感悟
  16. latex奇偶页使用不同的页眉
  17. Python的基本数据类型与运算符号
  18. python库numpy使用技巧(一)——提取数组中非零元素
  19. 最新《PHP全套学习课程》
  20. 用java编写一个美元汇率转换,编写一个人民币和美元的双向汇率转换程序,实现美元和人民币转换,汇率:1美元=6.92人民币...

热门文章

  1. 使用ASP.NET实现Model View Presenter(MVP)
  2. 易语言---字符串操作
  3. UI Automator Viewer Error while obtaining UI hierarchy XML file
  4. Windows 安装 NoneBot2
  5. 废旧光盘手工小制作_佳味家味浓 丨佳人美食手工零食课堂:咸蛋黄牛轧糖夹心小饼干制作活动...
  6. 【源码解析】hashMap源码跟进
  7. 一、select查询
  8. redis介绍及保持session会话
  9. 红顶商人 —— 胡雪岩
  10. 【翻译】TCP backlog在Linux中的工作原理