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;
 }
 
 
 

 

转载于:https://www.cnblogs.com/aiheshan/p/8848997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值