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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章