Tanky WooRSS

HDOJ 1106 排序

06 Aug 2010
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1106


分析: 注意2点: 考虑最后一个是不是5,不是5要输出。 第一个是5要处理,比如55553 就输出3


代码写的很乱

#include 
#include 
#include 

using namespace std;
char arr[1001];
int result[1001];
int main()
{
    while(scanf("%s", arr) != EOF)
    {
         int cnt = 0;
         int tmp = 0;
         int flag = 0;  // 表示第一个是5 
         for(int i=0; i<strlen(arr); ++i)
         {
              if(arr[i] == '5')
              {
                    if(i == 0)
                       flag = 1;
                    int k = i+1;
                    while(arr[k] == '5')
                        k++;
                     i=k-1;
                     if(flag == 1)
                     {
                         flag= 0;
                         continue;
                     }
                     result[cnt++] = tmp;
                    tmp = 0;
                    continue;
              }
              tmp *= 10;
              tmp += arr[i]-'0';
              if(i == strlen(arr)-1)
              {
                   result[cnt++] = tmp;
               }
         }
         sort(result, result+cnt);
         for(int i=0; i<cnt; ++i)
            if(i == 0)
                printf("%d",result[i]);
            else
                printf(" %d", result[i]);
         printf("\n");        
          memset(arr, 0, sizeof(arr));
    }

}