[英]how come my c++ code gives 2 different outputs in ideone and codeforces custom test?
ideone: https ://ideone.com/Ba3Nw7
#include <iostream>
using namespace std;
int main() {
int i,n,b25,b50,temp;
cin>>n;
for(i=0;i<n;i++)
{
cin>>temp;
if(temp==25)
b25++;
else if(temp==50)
{
if(b25>0)
{
b25--;
b50++;
}
else
{
cout<<"NO";
return 0;
}
}
else if(temp==100)
{
if(b25>0 && b50>0)
{
b25--;
b50--;
}
else if(b25>2)
b25-=3;
else
{
cout<<"NO";
return 0;
}
}
}
cout<<"YES";
return 0;
}
試過的測試用例是:2 25 100 ideone上的輸出為“ NO”,這是正確的答案,但是在codeforce自定義測試中,它給出的結果為“ YES”,為什么?
我看到的一個非常明顯的錯誤是沒有初始化變量b25
和b50
。
在您的代碼中,您在不斷地遞增和遞減這兩個變量,因此,您的答案每次都會出錯。
我會建議:
int i,n,b25=0,b50=0,temp=0;
您可能會得到正確或錯誤的答案,因為任意值都可以存儲在b25
和b50
。 有時它可能滿足“ NO
條件,而在其他時候可能滿足“ YES
條件。
您正在使用未初始化的變量b25
, b50
,但是從您的代碼中猜測,您假定它們最初為零。
它們的初始值當前可能因運行而有所不同,因此將其第二次放在這些平台之一上可能會得出不同的結果。 (除非ideone使用BSD或默認情況下內存最初為零的東西)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.