414 - 机加工曲面


时间限制:3.000 秒


http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=show_problem&problem=355

成像设备提供两个加工表面的数字图像,这些表面最终将相互接触组装。这种最终接触的粗糙度是要估计的。

数字图像由两个字符“X”和“”(空格)组成。图像始终有 25 列,但行数 N 是可变的。第一列 (1) 将始终包含一个“X”,并且将成为左表面的一部分。左表面可以从第一列 (1) 向右延伸,作为连续的 X。

同样,第 25 列将始终包含一个“X”,并且将是右表面的一部分。右表面可以从第 25 列向左延伸为连续的 X。

表面的数字图像视图


左 右


XXXX                                              XXXXX
		 
XXX                                             XXXXXXX
		 
XXXXX                                              XXXX
		 
XX                                               XXXXXX
		 
.                                                     .
		 
.                                                     .
		 
.                                                     .
		 
XXXX                                               XXXXXXX                                              XXXXXX

1 25



在图像的每一行中,可以有零个或多个空格字符将左表面与右表面分开。任何行中都不会有一个以上的空白区域

对于给定的每个图像,您将确定左表面与右表面接触后将存在的总“空隙”。“空隙”是左右表面接触后保留在它们之间的空间总数。

通过严格水平地相互水平位移来使两个表面接触,直到某行左表面的最右边的“X”紧邻最左边的“X”的左侧

注意:原始图像可以显示已经接触的两个表面,在这种情况下,接触粗糙度估计中没有位移。

输入

输入由一系列数字图像组成。每个图像数据集具有以下格式:


第一行 -

单个无符号整数 N,其值大于零 (0) 且小于 13。的第一个数字

N将是一行中的第一个字符。


接下来的 N 行 -

X,然后是零个或多个空格,然后是一个或多个 X的。

数据结束由空数据集发出信号,该数据集在图像数据集的第一行上为零,并且没有其他数据。

输出

对于您作为数据集收到的每个图像,您需要回复总空隙(表面接触后剩余的空间计数)。对行上的单个整数使用默认输出。

样本输入(字符“B”便于阅读。实际的输入文件将使用 ASCII 空格字符,而不是“B”)。

4
XXXXBBBBBBBBBBBBBBBBXXXXX
XXXBBBBBBBBBBBBBBBXXXXXXX
XXXXXBBBBBBBBBBBBBBBBXXXX
XXBBBBBBBBBBBBBBBBBXXXXXX
2
XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX
1
XXXXXXXXXBBBBBBBBBBBBBBXX
0

示例输出


4
0
0



学英语:

对于给定的每个图像,您将确定左表面与右表面接触后将存在的总“空隙”。

对所给的每幅图像,你要去查明当左表面接触到右表面后所存在的“空隙”总数。


完整代码:


/*0.009s*/

#include<cstdio>
#include<algorithm>
using namespace std;

int main(void)
{
	int N, sum, minb, temp;
	char c;
	while (scanf("%d", &N), N)
	{
		getchar();
		sum = 0;
		minb = 10000;
		for (int i = 0; i < N; i++)
		{
			temp = 0;
			while (true)
			{
				c = getchar();
				if (c == ' ')
				{
					sum++;
					temp++;
				}
				else if (c == '\n')
				{
					minb = min(minb, temp);
					break;
				}
			}
		}
		printf("%d\n", sum - minb * N);
	}
	return 0;
}