HDOJ 1045 - Fire Net 水二分图..奇葩构图...

博客介绍了HDOJ 1045题目的解题思路,这是一道关于地图布局的问题。在4x4的地图上,目标是确定最多可以放置多少个不会相互阻挡的'O',类似象棋车的移动规则。博主提出了一个创新的构图方法,将(x, y)坐标通过(x + 10 * n1, y + 10 * n2)进行映射,其中n1和n2分别表示x轴和y轴上的障碍物数量。通过这个策略,可以有效地解决题目中所提出的问题。" 112573016,10294366,手撕代码:深度解析数组扁平化实现,"['数组操作', 'JavaScript', '前端面试', '代码实现']
摘要由CSDN通过智能技术生成

                 题意:

                           给个地图(最大4*4)..问能放多少个O...每个O是不能上下左右能看到的.(跟象棋的车一样...)..问最多能放多少个...

                 题解:

                           水题找手感...我的奇葩构图....对于当前(x,y)..若x左边有n1个墙...y上边有n2个墙..那么其映射的坐标为(x+10*n1,y+10*n2)....好吧...

Program:

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<queue>
#define ll long long
#define MAXN 105
using namespace std;
int n,match[MAXN];
bool arc[MAXN][MAXN],used[MAXN];
char s[MAXN][MAXN];
bool dfs(int x)
{
       int i;
       for (i=1;i<=n;i++)
          if (arc[x][i] && !used[i])
          {
                 used[i]=true;
                 if (!match[i] || dfs(match[i]))
                 {
                       match[i]=x;
                       return true;
                 }
          }       
       return false; 
}
in
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值