Codeforce输出不同的内容

时间:2019-02-14 18:34:51

标签: c

我有以下代码。

CodeBlocks输出NO用于以下输入,但是Codeforces输出YES

对于以下输入:

1500 1500 1500 1 2 3,正确的输出是NO(在CodeBlocks中正确),但是它使用Codeforces“编译器”(也称为自定义调用)输出YES

我已经尝试了一切,但我完全没有想法。

#include <stdio.h>
#include <string.h>

int main()
{
int andrewGrapes, dmitryGrapes, michalGrapes;
int greenGrapes, purpleGrapes, blackGrapes;
int andrewCheck, dmitryCheck, michalCheck;

// how many grapes they want to eat
scanf("%d", &andrewGrapes); // green grapes only
scanf("%d", &dmitryGrapes); // purple and green
scanf("%d", &michalGrapes); // any grapes

// number of grapes
scanf("%d", &greenGrapes);
scanf("%d", &purpleGrapes);
scanf("%d", &blackGrapes);

if (greenGrapes >= andrewGrapes)
{
    andrewCheck = 1;
    greenGrapes = greenGrapes - andrewGrapes;
}

if (greenGrapes + purpleGrapes >= dmitryGrapes)
{
    greenGrapes = greenGrapes - dmitryGrapes;
    purpleGrapes = purpleGrapes - dmitryGrapes;

    dmitryCheck = 1;
}

//if (greenGrapes + purpleGrapes + blackGrapes >= michalGrapes)
  //  michalCheck = 1;

if (andrewCheck == 1)
{
    if (dmitryCheck == 1)
    printf("YES");
}   else printf("NO");

return 0;
}

1 个答案:

答案 0 :(得分:1)

您无需初始化变量,因此最初它们包含随机伪造的值。 对于andrewGrapesdmitryGrapesmichalGrapesgreenGrapespurpleGrapesblackGrapes来说,这不是问题,因为它们将分别由{ {1}}(假设每次呼叫成功)。

但是,只有在scanf为true时,才会为andrewCheck分配一个值。仅当if (greenGrapes >= andrewGrapes)为true时,才会为dmitryCheck分配一个值。

如果任何一个或两个条件都不成立,则相应的变量将保留其随机假值,而当您继续测试这些变量时,结果将是这样。