HDU1.3.5排序

这题有点意思,

注意几点:1.在判断s[i]!='5'时,记得加上一个判断i<s.length(),因为有可能最后一个数不是'5',那么它会继续访问s[s.length()-1]的后一个,也就是会越界,爆出Runtime Error

2.各种初始化要到位,用完记得统统回归原位

3.当出现连续的'5'时,你的结果可能会把它当成0输出,所以要加个判断条件,判断cnt是否为零,若为0,那不用管。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define maxn 1050
using namespace std;
int a[maxn];
string s,b;
int main(){
	int n,m=0,index;
	//int sum=0;
	int t,cnt=0;
	while(cin>>s){
		m=0;
		for(int i=0;i<s.length();i++){
			while(i<s.length()&&s[i]-'0'!=5){
				b[cnt++]=s[i++];
			}
			for(int j=cnt-1;j>=0;j--){
				sum[m]+=(b[j]-'0')*pow(10,(cnt-1-j));
			}
			if(cnt!=0) m++;
			cnt=0;
		}
		sort(sum,sum+m);
		for(int i=0;i<m-1;i++){
			cout<<sum[i]<<" ";
		}
		cout<<sum[m-1];
		memset(sum,0,sizeof(sum));
		cout<<endl;
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值