hdu 1106 排序(水题,字符串)

小记:自己想出bug就是爽、


思路:从左到右一位一位的加进来,碰到5就将之前形成的数放到数组里去。然后排序数组输出即可。

这里形成数的处理要注意。因为可能出现连续很多个5,所以不是一碰到5就要将一个数放到要排序的数组里去。

注意这点即可。

另外要保证所有数都存入了数组,我一开始就是最后那个数没存进去,WA了、


代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <map>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;

#define mst(a,b) memset(a,b,sizeof(a))
#define eps 10e-8

const int MAX_ = 10010;

char s[MAX_];
int p[MAX_];
int n, i, cnt, sum,len;
bool flag;
int main(){

	while(~scanf("%s",s)){
        len = strlen(s);
        cnt = 0;sum = 0;flag =0;
        for(i = 0; i < len; ++i){
            //if(!flag)continue;
            if(s[i] == '5'){
                if(!flag)continue;
                p[cnt++] = sum;
                sum = 0;
                flag = 0;
                continue;
            }flag = 1;
            sum = sum*10 + s[i] - '0';
        }
        if(s[i-1]!='5'){
            p[cnt++] = sum;
        }
        sort(p,p+cnt);
        printf("%d",p[0]);
        for(i = 1; i < cnt; ++i){
            printf(" %d",p[i]);
        }
        printf("\n");
	}
	return 0;
}


你可能感兴趣的:(hdu 1106 排序(水题,字符串))