• Fire Net hdu1045(DFS)


    http://acm.hdu.edu.cn/showproblem.php?pid=1045

    题意:现在让你在为'.'的位置上放置大炮。

    要求:1.同行同列只能有一个大炮;2.若是在同行(同列)有'X',可以将两个大炮隔开的话,那么可以允许同行(同列)有两个(及其以上)大炮出现

     

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <map>
    #include <queue>
    #include <stack>
    #include <math.h>
    
    using namespace std;
    
    #define INF 0x3f3f3f3f
    const int maxn = 10;
    
    typedef long long LL;
    char maps[maxn][maxn];
    int n, ans;
    
    int Judge(int row, int col)
    {
        ///判断左边
        for(int i=col; i>=0; i--)
        {
            if(maps[row][i]=='X')
                break;
            if(maps[row][i]=='@')
                return 0;
        }
    
        ///判断上边
        for(int i=row; i>=0; i--)
        {
            if(maps[i][col]=='X')
                break;
            if(maps[i][col]=='@')
                return 0;
        }
    
        return 1;
    }
    
    
    void DFS(int t, int cnt)///t记录当前点,cnt记录当前可以放置大炮的个数
    {
        if(t==n*n)
        {
           ans = max(ans, cnt);///ans存最大的放置大炮的个数
            return ;
        }
    
        int row=t/n;///
        int col=t%n;///
    
        if(maps[row][col]=='.' && Judge(row, col))///改点可以放置大炮
        {
            maps[row][col]='@';///将该点置为大炮
            DFS(t+1, cnt+1);
            maps[row][col]='.';///记得回溯时要将位置换回来
        }
    
            DFS(t+1, cnt);///若不满足放置大炮的要求,则遍历下一点
    }
    int main()
    {
    
        while(scanf("%d", &n), n)
        {
            for(int i=0; i<n; i++)
              scanf("%s", maps[i]);
    
              ans = 0;
              DFS(0, 0);
    
              printf("%d
    ", ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    RAID磁盘阵列介绍
    Nginx如何使用Nginx实现MySQL数据库的负载均衡
    挽救数据库性能的30条黄金法则
    mysql主从复制 (指定复制的数库或者表)
    Nginx系列之负载均衡策略
    Redis安装部署(一主二从三哨兵)
    让你的 Linux 命令骚起来
    MySQL/数据库 知识点总结
    Docker私有仓库搭建与界面化管理
    mysql sql语句修改字段名称,字段长度
  • 原文地址:https://www.cnblogs.com/daydayupacm/p/5772843.html
Copyright © 2020-2023  润新知