错误算法:
int x, y, z, k = 0; for (x = 0; x < 100; x++) for (y = 0; y <= 100; y++) for (z = 0; z <= 100; z++) if (x + y + z == 100 && x * 5 + y * 3 + z / 3 == 100) { k1++; printf("Plan %d is x:%-3d y:%-3d z:%-3d\n", k1, x1, y1, z1); }``正确算法:
int x, y, z, k = 0; for (x = 0; x < 100; x++) for (y = 0; y <= 100; y++) { z = 100 - x - y; if (z >= 0 && z % 3 == 0) { if (abs(x * 5 + y * 3 + z / 3 - 100) < 1e-3) { k++; printf("Plan %d is x:%-3d y:%-3d z:%-3d\n", k, x, y, z); } } }错误的算法中因为z是整型,所以z/3会向下取整 答案中z/3不一定是整数 所以正确的是: 只有四种情况