此代码在代码块中运行良好,但在ideone.com上出现运行时错误

时间:2016-03-28 05:44:42

标签: c++ gcc gnu

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的问题。问题的名称是&#39; Prateek和他的朋友&#39; 请帮忙。

1 个答案:

答案 0 :(得分:0)

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

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

我实际上并没记得处理过流读取失败的可能性,所以我可能错了/错过了什么