| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 977 人关注过本帖
标题:编译出现runtime error的提示,望解答
只看楼主 加入收藏
MJFW
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-12-3
收藏
 问题点数:0 回复次数:3 
编译出现runtime error的提示,望解答
题目:
  Recaman's Sequence
Time Limit:3000MS  Memory Limit:60000K
Total Submit:1656 Accepted:533

Description
The Recaman's sequence is defined by a0 = 0 ; for m > 0, am = am 1   m if the rsulting am is positive and not already in the sequence, otherwise am = am 1 + m.
The first few numbers in the Recaman's Sequence is 0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9 ...
Given k, your task is to calculate ak.

Input
The input consists of several test cases. Each line of the input contains an integer k where 0 <= k <= 500000.
The last line contains an integer  1, which should not be processed.

Output
For each k given in the input, print one line containing ak to the output.

Sample Input


7
10000
-1

Sample Output


20
18658

我写的源代码:
#include<iostream>
using namespace std;
void process(long n)
{
    long *a,*b,k,temp;
    a=new long[500001];
    b=new long[3011600];
    a[0]=0;
    b[0]=1;
    for(k=1;k<=n;k++)
    {
        temp=a[k-1]-k;
        if(temp>0)
        {
            if(b[temp]==1)
            {
                a[k]=a[k-1]+k;
                b[a[k]]=1;
            }
            else
            {
                a[k]=a[k-1]-k;
                b[temp]=1;
            }
        }
        else
        {
            a[k]=a[k-1]+k;
            b[a[k]]=1;
        }
    }
    
    cout<<a[k-1]<<endl;
    delete []a;
    delete []b;
}
int main(void)
{
    int i=-1,j;
    long n,math[100];
    do
    {
        i++;
        cin>>math[i];
        if(math[i]<-1||math[i]>500000)
        {i--;}
    }while(math[i]!=-1);
    for(j=0;j<i;j++)
    {
        n=math[j];
        process(n);
    }
    return 0;
}
结果在下面这个网站上提交编译时说Runtime Error,这题的题号是:2081
http://ai.pku.
搜索更多相关主题的帖子: runtime 提示 解答 
2008-12-03 23:20
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
调试了半天也没看到有Runtime Error,可能出错的的地方也就是数组下标过界,但下标都控制的很好,不会出界.猜想可能引起错误的原因:   
a=new long[500001];
b=new long[3011600];
由于分配空间过大引想错误,猜想可能是在内存极小的机子上运行了你的代码,没有足够的空间运行程序吧.上面分配的空间大概在十几M,虚拟内存也有十几M,加起来三十多M.当然也有可能是系统问题,可能是其它的操作系统上的内存分配机制和WINDOWS不同,或是早期的操作系统,对这个我并不熟悉,看有没有其他人来解答一下.
2008-12-04 21:33
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
LZ是在做在线评定。那个网站应该有关于这个错误的解释啊。LZ仔细找下。
2008-12-05 10:11
ronaldowsy
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2008-10-20
收藏
得分:0 
这不是ACM上面的题嘛?呵呵!
2008-12-05 11:25
快速回复:编译出现runtime error的提示,望解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022392 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved