题意:
给个地图(最大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