一开始是用最简单的三层循环,每个x,y,z一个个遍历,符合条件即输出,时间超限:
for (int x = 0; x <= 100; x++) {
for (int y = 0; y <= 100; y++) {
for (int z = 0; z <= 100; z++) {
if (x + y + z == 100 && 5 * x + 3 * y + (1.0 / 3)*z <= n) {
cout << "x=" << x << ",y=" << y << ",z=" << z << endl;
}
}
}
}
考虑通过x得出y的范围,y<=100-x,z=100-x-y.
for (x = 0; x <= 100; x++)
for (y = 0; y <= 100 - x; y++)
{
z = 100 - x - y;
if (x*5.0 + y * 3.0 + z / 3.0 <= n * 1.0)
cout << "x=" << x << ",y=" << y << ",z=" << z << endl;
}