gpt4 book ai didi

c++ - 两个 for 嵌套循环的区别。(C++)

转载 作者:行者123 更新时间:2023-11-30 02:38:46 25 4
gpt4 key购买 nike

我试图解决以下问题:

令 x,y,z 为域 [-5,5] 中的整数。显示满足3*x+y^3-z^2=0的解(x,y,z)的个数。我最初的解决方案是这样的:

int main() {
int x=-6;
int y=-6;
int z=-6;
int p=0;
for(int i=-5; i<6; i++)
{
x++;
for (int j=-5; j<6; j++)
{
y++;
for(int k=-5; k<6; k++)
{
z++;
if(3*x +y*y*y -z*z==0)
p++;
}
}
}
std::cout<< p ;
return 0;
}

这是正确的解决方案:

 int main() {
int x=-5;
int y=-5;
int z=-5;
int p=0;
for( x=-5; x<=5; x++)
for (y=-5; y<=5; y++)
for( z=-5; z<=5; z++)
if(3*x +y*y*y -z*z==0)
p++;

std::cout<< p;
return 0;
}

为什么这两个不同,我在第一个中做错了什么?

最佳答案

在“正确”的解决方案中,对于 x 的每个新值,y 再次从 -5 开始。在您的版本中,y 继续从其先前的值递增,因此第二次迭代涵盖 [5,15],第三次迭代涵盖 [15,25],等等。

奇怪的额外变量 j 涵盖了您希望 y 每次涵盖的范围,但 y 本身却没有。

关于c++ - 两个 for 嵌套循环的区别。(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com