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”,这是正确答案但是在codeforces自定义测试中它给出了“YES”,为什么会这样?
答案 0 :(得分:3)
我能看到的一个非常明显的错误就是没有初始化变量b25
和b50
。
在您的代码中,您不断递增和递减这两个变量,因此,您的答案每次都会出错。
我建议:
int i,n,b25=0,b50=0,temp=0;
您可能会得到正确或错误的答案,因为任意值都可以存储在b25
和b50
中。有时它可能满足NO
条件,有时可能满足YES
条件。
答案 1 :(得分:2)
您使用的变量b25
,b50
未初始化,但您可以从代码中猜测它们最初为零。
它们的初始值目前可能因运行而异,因此在其中一个平台上再次放置它可能会产生更多不同的结果。 (除非ideone使用BSD或默认情况下内存最初为零的东西)