排序最好用系统自带的sort(),o(n*n)不好过吧!
刚做了下,给你吧:
#include
#include
using namespace std;
int data[1005];
char str[1005];
int main()
{
while(scanf("%s",str)!=EOF)
{
int i=0,j=0,k=0,n=strlen(str);
while(str[k]=='5')k++;
j=k;
while(str[k])
{
while(str[k]!='5'&&str[k]!=0)k++;
str[k++]=0;
data[i++]=atoi(str+j);
while(str[k]=='5')k++;
j=k;
if(k==n)break;
}
sort(data,data+i);
cout< for(j=1;j cout<
return 0;
}
嗯.. 看你学习蛮认真的哈.
这个题目 一眼就知道不能转成整型去比较啦, 你怎知是不会超范围?
如果有111111111111111111111111111111111111111这样的数据你怎么搞?
所以正确解法是直接用字符串去比较大小, 这个简单吧?
还有 100*1000的数组只有100k而已, 一般都是给64m空间 不可能超的
ACM练习的是独自处理问题的能力,自己学着处理吧,跟自己身边的高手学习一下。给了代码也没有用。
。。。。 用Microsoft Visual C++ 运行没错