zoukankan      html  css  js  c++  java
  • ZOJ 1002 Fire Net 的答案(回溯法)

           ---------------------------------------------------------------------------------------------------------------------------

           严格来讲,此题并不算我做出来的。因为我在WA后忍不住搜索了这道题的网上资料,并在参考了“洞庭散人”的代码后AC的。  

           ----------------------------------------------------------------------------------------------------------------------------

            ZOJ 1002: Fire Net(碉堡 火力网)

            http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2

            此题大意是在一个最大4*4网格组成的城市里,每个网格可能为“墙壁”(用‘X’表示)和“街道”(用‘.’表示)。现在在街道放置碉堡,每个碉堡可以向上下左右四个方向开火,子弹射程无限远。墙壁可以阻挡子弹。问最多能放置多少个碉堡,使它们彼此不会互相摧毁。

           例如输入:

           .X..
           ....
           XX..
           ....

           则应输出最大个数为5。

           此题和n后问题非常类似,因此可用回溯法搜索整个解空间树。最开始我使用了“贪心法”但是WA,原因就在于贪心法的特点是:得到的解不一定是整体最优解。因此还是得用回溯法搜索整个空间树。和n后问题解法一样,CanPut是判别函数,判断位置(x,y)是否能放置碉堡。

           以下是我写的代码,但大体上都参考了洞庭散人的文章(代码在本质上完全一致):

           http://www.cnblogs.com/phinecos/archive/2008/09/18/1293017.html

    Code_1002_Fire_Net


     

  • 相关阅读:
    解决百度网盘倍速需要会员问题
    npm run dev其实就是vue-cli-service serve
    git常见操作和git原理
    ajax promise三种状态
    ajax get请求
    vue2.0x methods中一个函数调用另外一个函数
    Web前端开发规范之文件存储位置规范
    大数据应用期末总评
    分布式文件系统HDFS 练习
    安装Hadoop
  • 原文地址:https://www.cnblogs.com/hoodlum1980/p/1318407.html
Copyright © 2011-2022 走看看