aiheshan

有多自律,才能有多自由

导航

UVa 414 - Machined Surfaces

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

题目:每行25个字符,左开始为X,右边也是X,中间为空格B;当所有行的左右X相互向内移动,直到有一行左右X相遇;这时所有行中间一共还有多少空格B。

思路:中间空格最少的行一定最先相遇,即X最多的行最先相遇;当X最多行相遇时,每行减少的空格数相同,则用X最多行的X数减去每一行的X数即为每一行剩余的空格数。

可以这样理解,设X最多行的X数为N,则空格数为25-N,那么当X最多行相遇时,每一行可以看做还剩N个字符。则此时每行的空格数为N-X的个数。

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8   // freopen("input.txt","r",stdin);
 9    string s;
10    int count,n,i,max,j;
11    int aa[100];
12    while(cin>>n&&n)
13    {
14        getchar();
15        max=0;
16        memset(aa,0,sizeof(aa));
17        for(j=0;j<n;j++)
18        {
19          count=0;
20          getline(cin,s);
21          for(i=0;i<s.length();i++)
22               if(s[i]=='X')
23                 count++;     
24                 aa[j]=count;
25               if(max<count)
26                  max=count;
27        }
28          count=0;
29        for(i=0;i<n;i++)
30          {  
31            count+=max-aa[i];
32           }
33          cout<<count<<endl;
34     }
35      return 0;
36  }

 

posted on 2016-08-03 22:01  aiheshan  阅读(142)  评论(0编辑  收藏  举报