HDU 1106 排序

HDU 1106 排序
先对读入的字符串做如下处理:1、全部的'5'变成' ';2、删除前导的0(数字0本身需要保留)。
然后使用istringstream即可读入数字,之后对其进行排序并输出。
以下是我的代码:
#include < iostream >
#include
< sstream >
#include
< string >
#include
< algorithm >
#include
< cstdio >
using   namespace  std;

int  main()
{
    
/*
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    //
*/
    
    
string  num;
    
while (cin >> num)
    {
        num.insert(num.begin(),
' 5 ' );
        
for ( int  i = 0 ;i < num.size();i ++ )
            
if (num[i] == ' 5 ' )
            {
                num[i]
= '   ' ;
                
int  j = i + 1 ;
                
while (j < num.size()  &&  num[j] == ' 0 ' )
                {
                    
if (j + 1 < num.size()  &&  num[j + 1 ] != ' 5 ' )
                        num[j]
= '   ' ;
                    j
++ ;
                }
            }
        
/*
        cout<<"After dealing : "<<num<<endl;
        //
*/
        
        istringstream sin(num);
        
int  n( 0 ),r[ 1001 ],t;
        
while (sin >> t)
            r[n
++ ] = t;
        sort(r,r
+ n);
        
        
for ( int  i = 0 ;i < n;i ++ )
        {
            
if (i != 0 ) cout << "   " ;
            cout
<< r[i];
        }
        cout
<< endl;
    }
    
return   0 ;
}

你可能感兴趣的:(HDU 1106 排序)