2016-03-28 55 views
1
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此代碼是在代碼塊運行完美,但在ideone.com

此代碼使運行時錯誤是從hackerearth問題。問題的名稱是'Prateek和他的朋友' 請幫忙。

+3

想想如果只輸入是一個「文件結束」會發生什麼,這是在Ideone中沒有標準輸入時會發生什麼情況。你認爲你的變量有什麼價值? –

+1

http://ideone.com/WUk0dE – uSeemSurprised

+0

順便說一句,你有沒有嘗試這個比*一個*微不足道的測試用例? – WhozCraig

回答

0

我不確定這是否是您唯一的錯誤,但您應該始終確保已將整數變量分配給(除非您最終沒有使用它們) 在這種情況下,合理的默認值可能是long int n = 0, x = 0

此外,cin>>n將無法​​正常,如果它不能從流中讀取(由於EOF)工作,你應該做一個讀成功的話後很可能檢查,使用cin.fail(),如果返回true比以前的操作(或之前的一個)失敗。

我真的不記得應對甲流的可能性之前讀取失敗,所以我可能是錯/錯過了什麼

相關問題