求助各位大大~杭电1106题我的程序错在哪,如何改...谢谢!

2024-12-02 04:15:54
推荐回答(4个)
回答1:

排序最好用系统自带的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;
}

回答2:

嗯.. 看你学习蛮认真的哈.

这个题目 一眼就知道不能转成整型去比较啦, 你怎知是不会超范围?

如果有111111111111111111111111111111111111111这样的数据你怎么搞?

所以正确解法是直接用字符串去比较大小, 这个简单吧?

还有 100*1000的数组只有100k而已, 一般都是给64m空间 不可能超的

回答3:

ACM练习的是独自处理问题的能力,自己学着处理吧,跟自己身边的高手学习一下。给了代码也没有用。

回答4:

。。。。 用Microsoft Visual C++ 运行没错