这篇博客是从旧博客 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));
}
}