心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0

题目大意:不断地消除空格,使左右两边接触,求最后剩下多少个空格。

以下是我的代码:

#include<stdio.h>
bool ok(long n,long a[],long b[])
{
    
for(long i=0;i<n;i++)
      
if(a[i]>=b[i]-1)
        
return true;
    
return false;
}

int main()
{
    
const long maxn=26;
    
const char space=' ';
    
long n;
    
while(scanf("%ld",&n)==1)
    
{
       
if(n==0break;
       getchar();
       
char s[maxn][maxn]={0};
       
long left[maxn]={0},right[maxn]={0},ans=0;
       
for(long i=0;i<n;i++)
       
{
          
for(long j=0;j<25;j++)
            scanf(
"%c",&s[i][j]);
          getchar();
       }

       
// Read In
       for(long i=0;i<n;i++)
       
{
          
for(long j=0;j<25;j++)
            
if(s[i][j]=='X') left[i]++;
            
else break;
          left[i]
--;
          
for(long j=left[i]+1;j<25;j++)
            
if(s[i][j]=='X')
            
{
               right[i]
=j;
               
break;
            }

       }

       ans
=0;
       
for(long i=0;i<n;i++)
         
for(long j=0;j<25;j++)
           
if(s[i][j]==space)
             ans
++;
       
while(!ok(n,left,right))
       
{
          ans
-=n;
          
for(long i=0;i<n;i++)
            right[i]
--;
       }

       printf(
"%ld\n",ans);
    }

return 0;
}

posted on 2010-01-06 20:42 lee1r 阅读(850) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:基础/模拟

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理