ZOJ1002 Fire Net(递归版)

ZOJ1002 Fire Net(递归版)

大家好,又见面了,我是全栈君。

代码:
复制代码
#include<iostream>
using namespace std;

char map[4][4];// 地图
int maxNum,n;

bool CanPut(int row, int col)
{//测试是否可以放置碉堡到row行col列处,因为位置是从小到大前进的,因此只需要测试比待测试点小的位置
    int i;
    //测试col列上是否有面对面的碉堡
    for (i = row – 1; i >= 0; –i)
    {
        if (map[i][col] == ‘O’) return false;
        if (map[i][col] == ‘X’) break;
    }
    //测试row行上是否有面对面的碉堡
    for (i = col – 1; i >= 0; –i)
    {
        if (map[row][i] == ‘O’) return false;
        if (map[row][i] == ‘X’) break;
    }
    return true;
}

void Solve(int k,int curNum)
{
    int x,y;
    if(k==n*n)
    {//到最后一个了
        if(curNum>maxNum)
        {//保存当前遍历路径找到的最大值
            maxNum=curNum;
            return;
        }
    }
    else
    {
        x=k/n;//行号
        y=k%n;//列号
        if((map[x][y]==’.’)&&(CanPut(x,y)==true))
        {//当前点是空白处,并且可以放置碉堡
            map[x][y]=’O’;//放置碉堡
            Solve(k+1,curNum+1);//递归进入下一个位置
            map[x][y]=’.’;//回溯
        }
        //当前点不能放置或回溯回来
        Solve(k+1,curNum);
    }
}

int main()
{
    int i,j;
    while(cin>>n&&n!=0)
    {
        //输入地图
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                cin>>map[i][j];
            }
        }
        maxNum=0;//最多可能放置的数目
        //开始深搜,起点设置为左上角
        Solve(0,0);
        cout<<maxNum<<endl;
    }
    return 0;
}
复制代码



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/09/18/1293017.html,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107811.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 共轭函数_复共轭函数

    共轭函数_复共轭函数定义设函数,定义函数为此函数称为函数f的共轭函数,使上述上确界有限,即差值在domf有上界的所有构成了共轭函数的定义域,下图描述了此定义(图中y即为公式中的t)。xy相当于是以y为斜率且过原

    2022年8月3日
    8
  • supervisor命令出现 unix:///tmp/supervisor.sock no such file[通俗易懂]

    supervisor命令出现 unix:///tmp/supervisor.sock no such file[通俗易懂]supervisor命令出现 unix:///tmp/supervisor.sock no such file

    2022年4月24日
    41
  • nextint() java_java中random.nextint()的用法

    nextint() java_java中random.nextint()的用法java中random.nextint()的用法发布时间:2020-06-1514:41:57来源:亿速云阅读:193作者:鸽子random.nextInt()的用法1、不带参数的nextInt()会生成所有有效的整数(包含正数,负数,0)2、带参的nextInt(intx)则会生成一个范围在0~x(不包含X)内的任意正整数例如:intx=newRandom.nextInt(100);则x…

    2022年7月22日
    13
  • mybatis和hibernate的以及jpa区别_hibernate sql

    mybatis和hibernate的以及jpa区别_hibernate sql1、概述hibernate和mybatis是当前流行的ORM框架。hibernate对数据库结构提供了较为完整的封装。mybatis主要着力点在于java对象与SQL之间的映射关系。2、Hibernate理解Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将java对象与数据库表建立映射关系,是一个全自动的orm框架。Hibernate可以自动生成SQ

    2025年10月20日
    2
  • 客户信息管理系统_销售找客户最好的app

    客户信息管理系统_销售找客户最好的app客户信息管理系统课程设计的题目及简介设计说明程序流图程序清单Customer类MainView类Tools类DataManager类调试结果课程设计体会课程设计的题目及简介客户信息管理系统,功能如下:(1)添加客户信息(2)修改客户信息(3)删除客户数据(4)查询客户列表(5)所有数据通过JDBC保存到MySql数据库中1,数据库名:cms_hisoft2,表名:users3,字段列表和类型:id,int,主键,自动增长name,varchar(20),姓名gender,var

    2022年10月17日
    4
  • Firefox浏览器设置字符编码格式

    Firefox浏览器设置字符编码格式

    2021年9月25日
    183

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号