随笔 - 19, 文章 - 0, 评论 - 2, 引用 - 0
数据加载中……

zoj1405_Tanning Salon

        这个题目我错了很久,一直错的原因是我没有真正的理解题目的意思。
        在 1 ABAB  这组数据上错了,改过来之后就过了,下一次一定要好好读题。
        这一次是尽量用C++来写,在用rfind函数的时候出了一点小问题,应该是从这个字符往前推一位开始查找,若是第一个字符,就不能调用函数了,不然就会出错。所以就多加了一个判断,影响了程序的可读性。下一次要找到一个不需要这样判断的方法。
#include<iostream>
#include
<string>
#define DEBUG 1
using namespace std ;

const int cap = 33 ;

char salon[cap] ;
string in ;

int check( int avai )
{
    
int i, j, pos(-1), flag, away(0) ;
    
for( i=0; i<in.size(); ++i ){
        
if( i >= 1 )
            pos 
= in.rfind( in[i], i ) ;
        
if( pos >= 0 ){
            flag 
= 0 ;
            
for( j=0; j<avai; ++j ){
                
if( salon[j] == in[i] ){
                    salon[j] 
= '\0' ;
                    flag 
= 1 ;
                    
break ;
                }

            }

            
if!flag )    {
                
for( j=0; j<avai; ++j ){
                    
if!salon[j] ){
                        flag 
= 1 ;
                        
break ;
                    }

                }

            }

            
if!flag )
                
++away ;
        }

        
else{
            
for( j=0; j<avai; ++j ){
                
if!salon[j] ){
                    salon[j] 
= in[i] ;
                    
break ;
                }

            }

        }

    }

    
return away ;
}


void output( int away )
{
    
if( away )
        cout 
<< away << " customer(s) walked away." << endl ;
    
else
        cout 
<< "All customers tanned successfully." << endl ;
}


int main( )
{
    
#if DEBUG
    freopen(
"C:\\Documents and Settings\\Administrator\\桌面\\in.in","r",stdin) ;
    freopen(
"C:\\Documents and Settings\\Administrator\\桌面\\out.out","w",stdout) ;
    
#endif

    
int avai, away ;
    
while( cin >> avai ){
        
if( avai == 0 )
            
break ;
        cin 
>> in ;
        away 
= check( avai ) ;
        output( away ) ;
    }
    
    
return 0 ;
}

posted on 2009-08-07 11:50 祝你好运! 阅读(403) 评论(0)  编辑 收藏 引用


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