Codeforces输出不同的东西

问题描述 投票:1回答:1

我有以下代码。

CodeBlocks为以下输入输出NO,但Codeforces输出YES

对于以下输入:

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

我已经尝试了所有的东西,而且我的想法非常多。

#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;
}
c
1个回答
1
投票

您没有初始化变量,因此最初它们包含随机虚假值。这对于andrewGrapesdmitryGrapesmichalGrapesgreenGrapespurpleGrapesblackGrapes来说不是问题,因为它们将分别由scanf赋值(假设每次调用成功)。

但是,当andrewCheck为真时,if (greenGrapes >= andrewGrapes)将仅被赋值。如果dmitryCheck为真,则只会为if (greenGrapes + purpleGrapes >= dmitryGrapes)指定一个值。

如果任何一个或两个条件都不为真,则相应变量将保留其随机伪值,当您继续测试这些变量时,结果将如此。

© www.soinside.com 2019 - 2024. All rights reserved.