UVa 414 - Machined Surfaces
Posted aiheshan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 414 - Machined Surfaces相关的知识,希望对你有一定的参考价值。
题目大意:
有一个数字图像设备有N行,每行有25个字符。第一列和第25列都是X,最左和最右都可以是连续的多个X,中间是空格。 当把最右往左平移到X相遇的时候,计算整个平面的空格数。注意
输入:
行数N,然后是N行的字符;
注意:sample 中用B表示空格是为了看的方便,真实的输入是ASCII的空格字符;
输出:
平面的空格数;
Sample Input
4
XXXXBBBBBBBBBBBBBBBBXXXXX
XXXBBBBBBBBBBBBBBBXXXXXXX
XXXXXBBBBBBBBBBBBBBBBXXXX
XXBBBBBBBBBBBBBBBBBXXXXXX
2
XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX
1
XXXXXXXXXBBBBBBBBBBBBBBXX
0
Sample Output
4
0
0
思路分析:这道题的主要是读懂题目意思。
每行固定25个字符,当平移结束的时候是有某一行中间没有了空格,这一行为X字符个数最多的一行,其中X字符数记为max,则其他行的空格数为max减去该行的X字符个数;
假设记录每i行的X个数为aa[i],其中aa[i]最大为max;则 max - aa[i] 为每行的空格数,平面的空格数为 sum(max - aa[i])
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int main() { // freopen("input.txt","r",stdin); string s; int count,n,i,max,j; int aa[100]; while(cin>>n&&n) { getchar(); max=0; memset(aa,0,sizeof(aa)); for(j=0;j<n;j++) { count=0; getline(cin,s); for(i=0;i<s.length();i++) if(s[i]==‘X‘) count++; aa[j]=count; if(max<count) max=count; } count=0; for(i=0;i<n;i++) { count+=max-aa[i]; } cout<<count<<endl; } return 0; }
以上是关于UVa 414 - Machined Surfaces的主要内容,如果未能解决你的问题,请参考以下文章