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 上的输出是“否”,这是正确答案,但在 codeforces 自定义测试中它给出了"is",这是为什么?
最佳答案
我看到的一个非常明显的错误是没有初始化变量 b25
和 b50
。
在您的代码中,您不断递增和递减两个变量,因此,您的答案每次都会出错。
我建议:
int i,n,b25=0,b50=0,temp=0;
您可能得到正确或错误的答案,因为任意值都可以存储在 b25
和 b50
中。有时它可能满足 NO
条件,而在其他时候,它可能满足 YES
条件。
如果您的变量是静态的或在文件范围内,它们将被初始化为 0。但是,您的变量是本地定义的,因此它的值将是不确定的,调用未定义的行为。
关于c++ - 为什么我的 C++ 代码在 ideone 和 codeforces 自定义测试中给出了 2 个不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086658/