【问题标题】:This code is running perfectly in codeblocks but giving a runtime error on ideone.com此代码在代码块中完美运行,但在 ideone.com 上出现运行时错误
【发布时间】:2016-03-28 05:44:41
【问题描述】:
int main()
{

    long int n,x,cost[100];
    cin>>n>>x;
    for(int i=0;i<n;i++)
        cin>>cost[i];

    int i=0,flag=0,s=0,first;
    first=cost[0];
    while(i<n)
    {
       s+=cost[i];
       if(s>x){
           s-=first;
           first++;
       }
       if(s==x)
       {
           flag=1;
           break;
       } 
       i++;
    }
    if(flag==0) cout<<"no";
    else cout<<"yes";
}

Ideone demo

此代码是来自hackerearth 的问题。问题的名称是“Prateek 和他的朋友们” 请帮忙。

【问题讨论】:

  • 想想如果唯一的输入是“文件结尾”会发生什么,这就是在 Ideone 中没有标准输入时会发生什么。你认为你的变量会有什么价值?
  • 顺便说一句,您尝试过的不仅仅是 one 琐碎的测试用例吗?
  • 如果n &gt; 100 呢?

标签: c++ gcc gnu


【解决方案1】:

我不确定这是否是您唯一的错误,但您应该始终确保已分配整数变量(除非您最终没有使用它们) 在这种情况下,合理的默认值可能是long int n = 0, x = 0

此外,cin&gt;&gt;n 如果无法从流中读取(由于 EOF)将无法正常工作,您可能应该在读取成功后检查它,使用 cin.fail(),如果它返回 true比之前的操作(或之前的操作)失败。

我实际上不记得之前处理过流读取失败的可能性,所以我可能错了/错过了一些东西

【讨论】:

    最近更新 更多