1144.农场灌溉问题
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
一农场由图所示的十一种小方块组成,蓝色线条为灌溉渠。若相邻两块的灌溉渠相连则只需一口水井灌溉。
输入
给出(m,n)表示农场大小,若干由字母表示的农场图(最大不超过50×50)
m==-1&&n==-1表示结束
输出
编程求出最小需要打的井数。每个测例的输出占一行。当M=N=-1时结束程序。
#include <iostream>
using namespace std;
int m,n;
int cnt;
int farm[50][50];
int used[50][50];
int moveto(int x, int y, int d); //判断能否向方向d走一格
int oppo[4]={2,3,0,1}; //记录反方向,判断相邻两格是否连通时要用
int walk[4][2]= //走一格后的横纵坐标变化
{
0, -1, //左
+1, 0, //下
0, +1, //右
-1, 0 //上
};
int square[11][4]= //11种方格向4个方向的连通情况
{
1,0,0,1, //A
0,0,1,1, //B
1,1,0,0, //C
0,1,1,0, //D
0,1,0,1, //E
1,0,1,0, //F
1,0