• Fire Net ZOJ 1002


    题意:

    一个n * n 的棋盘 上面有些障碍物  放棋子 棋子不能在同一行 同一列 但可以在同一行或同一列隔着障碍物放

    这题与poj1321  的思想差不多

    对于一个位置 有两种状态放还是不放  

    参数inx  从1到n*n递增  inx/n表示x轴坐标   inx%n表示y轴坐标 

    k 为当前所用的棋子

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #define mem(a,b) memset(a,b,sizeof(a))
    using namespace std;
    const int maxn = 6, INF = 0xfffffff;
    typedef long long LL;
    char str[maxn][maxn];
    int vis[maxn][maxn];
    int n, minn;
    int check(int x,int y)
    {
        for(int i=x-1; i>=0; --i)
        {
            if(vis[i][y])
                return 0;
            if(str[i][y] == 'X')
                break;
        }
        for(int i=y-1; i>=0; --i)
        {
            if(vis[x][i])
                return 0;
            if(str[x][i] == 'X')
                break;
        }
        return 1;
    }
    
    void dfs(int inx, int k)
    {
        if(inx == n*n)
        {
            minn = max(k, minn);
            return;
        }
    
        int x = inx / n;
        int y = inx % n;
        if(str[x][y] == '.' && check(x,y))
        {
            vis[x][y] = 1;
            dfs(inx+1, k+1);
            vis[x][y] = 0;
        }
        dfs(inx+1, k);
    }
    
    int main()
    {
        while(cin>>n && n)
        {
            minn = -INF;
            mem(vis,0);
            mem(str,0);
            for(int i=0;i<n;i++)
                cin>>str[i];
            dfs(0,0);
            cout<<minn<<endl;
    
        }
        return 0;
    }
  • 相关阅读:
    复习清单
    pat 1132 Cut Integer(20 分)
    pat 1013 Battle Over Cities(25 分) (并查集)
    pat 1100 Mars Numbers(20 分)
    pat 1108 Finding Average(20 分)
    OpenCV入门学习资料汇总
    SIFT算法问题issue1
    《机器学习》瓜书—周志华
    Pycharm配置
    在cmd下可以import cv2,而Pycharm报错:找不到cv2
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9140160.html
Copyright © 2020-2023  润新知