内存限制:10000K 总时限:3000ms
描述
一农场由图所示的十一种小方块组成,蓝色线条为灌溉渠。若相邻两块的灌溉渠相连则只需一口水井灌溉。
输入
给出若干由字母表示的最大不超过50×50具体由(m,n)表示,的农场图
输出
编程求出最小需要打的井数。每个测例的输出占一行。当M=N=-1时结束程序。
输入样例
2 2 DK HF 3 3 ADC FJK IHE -1 -1
输出样例
2 3
提示
参考迷宫问题,实现时关键要解决好各块的表示问题。
来源
#include <iostream>
using namespace std;
int m, n;
struct Node
{
char ch; //农场类型
int visited; //访问标记
int left, right, up, down; //连通线
}maze[100][100];
int dir[4][2] = {
{1,0}, {-1,0}, {0,-1}, {0,1}}; //上下左右四个方向
int Place(int x, int y, int nx, int ny)
{
//未越界且没有被访问过
if(nx>0 && nx<=m && ny>0 && ny<=n && !maze[nx][ny].visited)
{
//向左
if(nx==x &&