zoj1002 Fire Net

原创 2006年06月14日 20:23:00
  1. //zoj1002 Fire Net
  2. //Accepted 1002 C++ 00:00.01 436K
  3. #include <stdio.h>
  4. int n;
  5. int max;
  6. char map[5][5];
  7. bool canput(int x, int y)
  8. {
  9.        int i,j;
  10.        if (map[x][y]!='.') return false;
  11.        for (i=x+1; i<n; i++){
  12.               if (map[i][y]=='X') break;
  13.               if (map[i][y]=='O') return false;
  14.        }
  15.        for (i=x-1; i>=0; i--){
  16.               if (map[i][y]=='X') break;
  17.               if (map[i][y]=='O') return false;
  18.        }
  19.        for (j=y+1; j<n; j++){
  20.               if (map[x][j]=='X') break;
  21.               if (map[x][j]=='O') return false;
  22.        }
  23.        for (j=y-1; j>=0; j--){
  24.               if (map[x][j]=='X') break;
  25.               if (map[x][j]=='O') return false;
  26.        }
  27.        return true;
  28. }
  29. bool finish()
  30. {
  31.        for (int i=0; i<n; ++i)
  32.               for (int j=0; j<n; ++j)
  33.                      if (canput(i,j))
  34.                             return false;
  35.        return true;
  36. }
  37. void backtrack(int num)
  38. {
  39.        if (finish()){
  40.               if (num>max) max = num;
  41.               return ;
  42.        }
  43.        for (int i=0; i<n; ++i)
  44.               for (int j=0; j<n; ++j)
  45.                      if (canput(i,j)){
  46.                             map[i][j] = 'O';
  47.                             backtrack(num+1);
  48.                             map[i][j] = '.';
  49.                      }
  50. }
  51. void solve()
  52. {
  53.        getchar();
  54.        for (int i=0; i<n; ++i){
  55.               for (int j=0; j<n; ++j)
  56.                      scanf ("%c",&map[i][j]);
  57.               getchar();
  58.        }
  59.        max = 0;
  60.        backtrack(0);
  61.        printf ("%d/n",max);
  62. }
  63. int main()
  64. {
  65. #ifdef ONLINE_JUDGE
  66. #else
  67.        freopen("1002.txt","r",stdin);
  68. #endif
  69.        while (scanf("%d",&n)!=EOF && n)
  70.               solve();
  71. #ifdef ONLINE_JUDGE
  72. #else
  73.        fclose(stdin);
  74. #endif
  75.        return 0;
  76. }

zoj1002-Fire Net

此题大意是在一个最大4*4网格组成的城市里,每个网格可能为“墙壁”(用‘X’表示)和“街道”(用‘.’表示)。现在在街道放置碉堡,每个碉堡可以向上下左右四个方向开火,子弹射程无限远。墙壁可以阻挡子弹。...
  • acm_JL
  • acm_JL
  • 2016年03月14日 19:27
  • 963

zoj 1002 Fire Net(DFS~ 哈哈哈哈,终于过了!!!)

1002 从一开始做ACM就郁闷的一道题,在1001下面它应该觉得压力很大啊!!哈哈。。 做完八皇后,党说这个能做了。。。 嘿嘿。这题是找放置最多数目的blockhouses(碉堡。。)使之不能同行同...
  • zxy_snow
  • zxy_snow
  • 2010年10月19日 23:15
  • 8703

zoj1002(Fire Net)

题目描述:         给定一个erwei
  • shiqining888
  • shiqining888
  • 2014年11月07日 20:48
  • 227

[DFS]zoj1002 Fire Net

B - Fire Net Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u SubmitSt...
  • u012848631
  • u012848631
  • 2015年07月24日 12:40
  • 277

ZOJ1002 FIRE NET

ZOJ 1002
  • yao_wust
  • yao_wust
  • 2014年09月12日 11:02
  • 617

ZOJ1002 Fire Net

 #includeusing namespace std;int n;char str[4][4];int maxNum;void handleX(int,int);bool judge(int,in...
  • shamoqiuyin
  • shamoqiuyin
  • 2010年10月01日 11:41
  • 223

[题解] ZOJ1002 -- Fire Net

Java复习
  • kradnangel
  • kradnangel
  • 2014年04月18日 16:28
  • 585

ZOJ1002 Fire Net(二分图匹配)

这道题的预处理有点恶心,自己没写出来,参考了一下别人的代码 题目大意: 有一个N*N(N     地图 最大合法放置方案(不唯一)  一种合法但不最大方案       不合法方案 输入: 第1行...
  • C20142407
  • C20142407
  • 2015年07月28日 15:33
  • 380

zoj1002 Fire Net

Fire Net Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %lld & %llu ...
  • acm_1361677193
  • acm_1361677193
  • 2015年07月30日 12:28
  • 107

ZOJ1002 Fire Net(DFS)

Problem Description Suppose that we have a square city with straight streets. A map of a city is a ...
  • weixin_40061167
  • weixin_40061167
  • 2017年10月20日 19:50
  • 51
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zoj1002 Fire Net
举报原因:
原因补充:

(最多只允许输入30个字)