此题的重点 在于思维的全面性
由题意可以知道 中间的字符分割可以用5的存在来判断(这里还有注意多个5存在的情况)之后别忘了特殊情况的处理 比如初始值的确定(首字母是不是5) 已经末尾没有5的时候怎么去取值
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
int main()
{
string s;
int a[1001],i,j,t,sum,start,end,z;
while(cin>>s!=NULL)//getline可以接受含有空格的输入
{
memset(a,0,sizeof(a));
start=0;
t=0;
z=0;
for(i=0;i<s.length();i++)
{
if(s[i]!='5')
{
start=i;
break;
}
}
for(i=start;i<s.length();i++)
{
if(s[i]=='5'||i==s.length()-1)
{
if(s[i-1]!='5') end=i-1;
else if(i==s.length()-1) end=i;
if(s[i+1]!='5'||i==s.length()-1)
{
sum=0;
z=0;
for(j=end;j>=start;j--)
{
sum+=pow(10,z++)*(s[j]-'0');
}
a[t++]=sum;
start=i+1;
}
}
}
sort(a,a+t);
for(i=0;i<t;i++)
{
if(i==0) cout<<a[i];
else cout<<' '<<a[i];
}
cout<<endl;
}
return 0;
}
中间部分的好处理 尤其注意特殊部位的(开始 结束)的处理(也就多两个判断就好了)