题目链接

http://poj.org/problem?id=1321

思路

和N皇后问题类似

但是有一点不同的是 这个是只需要摆放K个棋子就可以了

所以 我们要做好 两个出口

并且要持续往下一层找

AC代码

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <ctype.h>
  4. #include <cstdlib>
  5. #include <cmath>
  6. #include <climits>
  7. #include <ctime>
  8. #include <iostream>
  9. #include <algorithm>
  10. #include <deque>
  11. #include <vector>
  12. #include <queue>
  13. #include <string>
  14. #include <map>
  15. #include <stack>
  16. #include <set>
  17. #include <numeric>
  18. #include <sstream>
  19. #include <iomanip>
  20. #include <limits>
  21. #define CLR(a) memset(a, 0, sizeof(a))
  22. #define pb push_back
  23. using namespace std;
  24. typedef long long ll;
  25. typedef long double ld;
  26. typedef unsigned long long ull;
  27. typedef pair <int, int> pii;
  28. typedef pair <ll, ll> pll;
  29. typedef pair<string, int> psi;
  30. typedef pair<string, string> pss;
  31. const double PI = acos(-1);
  32. const double E = exp(1);
  33. const double eps = 1e-30;
  34. const int INF = 0x3f3f3f3f;
  35. const int maxn = 5e4 + 5;
  36. const int MOD = 1e9 + 7;
  37. string G[10];
  38. int ans;
  39. int n, k, m;
  40. int v[10];
  41. void dfs(int cur)
  42. {
  43. if (m == k)
  44. {
  45. ans++;
  46. return;
  47. }
  48. if (cur >= n)
  49. return;
  50. for (int i = 0; i < n; i++)
  51. {
  52. if (G[cur][i] == '#' && v[i] == 0)
  53. {
  54. v[i] = 1;
  55. m++;
  56. dfs(cur + 1);
  57. m--;
  58. v[i] = 0;
  59. }
  60. }
  61. dfs(cur + 1);
  62. }
  63. void init()
  64. {
  65. CLR(v);
  66. ans = 0;
  67. }
  68. int main()
  69. {
  70. while (scanf("%d%d", &n, &k))
  71. {
  72. if (n == -1 && k == -1)
  73. break;
  74. for (int i = 0; i < n; i++)
  75. cin >> G[i];
  76. init();
  77. m = 0;
  78. dfs(0);
  79. cout << ans << endl;
  80. }
  81. }

POJ - 1321 棋盘问题 【DFS】的更多相关文章

  1. POJ 1321 棋盘问题 --- DFS

    POJ 1321 题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子. (注意 .不可放 #可放) 解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标 ...

  2. POJ 1321 棋盘问题(DFS板子题,简单搜索练习)

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

  3. POJ 1321 棋盘问题 dfs 难度:0

    http://poj.org/problem?id=1321 注意是在'#'的地方放棋子 矩阵大小不过8*8,即使是8!的时间复杂度也足以承受,可以直接dfs求解 dfs时标注当前点的行和列已被访问, ...

  4. POJ 1321 棋盘问题 (DFS + 回溯)

    题目链接:http://poj.org/problem?id=1321 题意:中文题目,就不多说了...... 思路: 解题方法挺多,刚开始想的是先从N行中选择出来含有“#”的K行,再在这K行中放置K ...

  5. POJ 1321 棋盘问题 DFS 期末前水一水就好……

    A - 棋盘问题 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  6. POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)

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

  7. POJ 1321 棋盘问题 DFS搜索

    简单搜索 练习一下回溯 #include <iostream> #include <cstdio> #include <cstring> #include < ...

  8. DFS POJ 1321 棋盘问题

    题目传送门 /* DFS:因为一行或一列都只放一个,可以枚举从哪一行开始放,DFS放棋子,同一列只能有一个 */ #include <cstdio> #include <algori ...

  9. POJ 1321 棋盘问题(C)回溯

    Emmm,我又来 POJ 了,这题感觉比上次做的简单点.类似皇后问题.但是稍微做了一点变形,比如棋子数量是不定的.棋盘形状不在是方形等等. 题目链接:POJ 1321 棋盘问题 解题思路 基本思路:从 ...

  10. POJ 1321 - 棋盘问题 - [经典DFS]

    题目链接:http://poj.org/problem?id=1321 Time Limit: 1000MS Memory Limit: 10000K Description 在一个给定形状的棋盘(形 ...

随机推荐

  1. 了解什么是WebLogic Server 多数据源(Multi-DataSource)

      1. 什么是多数据源 我们知道配置WebLogic Server集群时一定要配置一个单一接入点(例如:Apache或F5),这样客户端只要访问这个单一入口点就可以了.对于客户来说,就好象访问一台服 ...

  2. Yii2 数据操作Query Builder

    转载地址: http://blog.csdn.net/hzqghost/article/details/44117081 Yii2 数据操作Query Builder 分类: Yii22015-03- ...

  3. Redis 在 Java 中的使用

    转:http://blog.csdn.net/jiangtao_st/article/details/8256610 一.下载jar包 https://github.com/xetorthio/jed ...

  4. jsp中jquery用法一步刷新 验证用户名是否存在

    <script type="text/javascript"> /* $(document).ready(function(){ var id="ha&quo ...

  5. 在VS2013中打开Nuget

    1.工具→NuGet程序包管理器→程序包管理控制台 2.没有的话,就去  工具→扩展和更新   搜索nuget

  6. Lua学习二----------Lua的基本语法

    © 版权声明:本文为博主原创文章,转载请注明出处 Lua基本语法: 1.--表示单行注释 2.--[[--]]表示多行注释 3.Lua区分大小写 4.Lua中变量默认是全局变量,除非用local显式声 ...

  7. jQuery Validate(三)

    这里,我们再说说radio.checkbox.select的验证方式. 1.用新版的写法进行验证. <!DOCTYPE html> <html> <head> &l ...

  8. 一个数组nums,其中任意两个值等于给定值target,返回这两个值在nums里的位置

    package com.java.tencent; import java.lang.reflect.Array; import java.util.Arrays; import java.util. ...

  9. servletResponse 请求重定向

    package response;/* * 重定向特点: * 1,浏览器会向服务器发送两次请求,意味着就有两个request\response * 2,用重定向技术,浏览器地址栏会发生变化 *  * ...

  10. 08 redis中hash结构及命令详解

    Hash 哈希数据类型相关命令 hset key field value 作用: 把key中 filed域的值设为value 注:如果没有field域,直接添加,如果有,则覆盖原field域的值 hm ...