UVA1408 Flight Control

题目描述

你是一个被某飞行控制中心雇佣的关键程序员,并且你刚刚被分配了一个在一个特定地区监视飞机活动的任务.   那个地区的某些飞机距离控制中心太远了,以至于探测器无法锁定他们(的位置),想要确定那个地区飞机的真正数量是不可能的.但是,对飞行控制传感器阵列的扫描显示了那个地区每个格子上的能量值,并且通过对这些数据的分析,你能对那个地区有一个大致的了解.   你已经决定先写一个程序来简化对最小飞机数量的计算.你需要遵循以下规则: 1. 传感器阵列中没有读取到数据的格子表明该格子没有任何飞机. 2. 一个有着正整数值的格子表明该格子有飞机,并且在这个格子上, - 可能会停着一个飞机,或者 - 恰好是一个正在水平或竖直飞行的飞机轨迹(意味着飞机不能半路更改飞行方向). 3. 如果某一行或某一列的某些相邻网格是一架飞机的轨迹,那么这些格子的能量值必须严格递增或递减.

输入格式

输入文件中有多个测试点.每个测试点以两个整数 $N$ 和 $M$ 开头($1 \le N \le 50, 1 \le M \le 50$),是你所监视地区的长度和宽度.接下来的 $N$ 行中,每行都包含着 $M$ 个整数,第 $i$ 行 $j$ 列的数字表示被飞行控制传感器阵列所探测到的能量.保证输入中的每个整数都在 $32$ 位带符号整数的范围内.   每个测试点后都有一个空行.$N = 0$ 并且 $M = 0$ 的一行输入表示输入文件的结束.

输出格式

对于每个测试点,输出一行一个整数,表示可能的飞机数量最小值.格式见输出样例. ### 输入输出样例 Input ``` 3 3 1 2 3 4 5 6 7 8 9 0 0 ``` output ``` Case 1: 3 ```