【反思】
1.此类问题属于方程求解问题,利用枚举思想解决问题,采用多个循环,知道能够求解出其他变量为止
2.本题解题步骤:
1)首先明确要获得的结果:甲乙丙每人满、半、空各几个框
2)若已知甲满半框以及乙的满框可以求出剩下的框
3.自己忽略了一个事实:空框的求取不需要额外的循环,因为题目已知有21个框,所以每人必然是7个框,求出了满框和半框,用7减去前两个变量就可以得到空框的数量。所以当求解遇到障碍的时候要多多看几遍题目,是不是自己漏掉了什么条件。
【代码】
#include <stdio.h>
int main()
{
int x1, y1,z1, x2, y2,z2, x3, y3,z3;
for (x1 = 0; x1 <= 7; ++x1)
for (y1 = 0; y1 <= 7; ++y1)
for (x2 = 0; x2 <= 7; ++x2)
{
y2 = 2 * x1 + y1 - 2 * x2;
x3 = 7 - (x1 + x2);
y3 = 7 - (y1 + y2);
z1 = 7 - x1 - y1;
z2 = 7 - x2 - y2;
z3 = 7 - x3 - y3;
if ((x2 * 10 + 5 * y2) == (10 * x3 + 5 * y3) && (y2 >= 0) && (x3 >= 0) && (y3 >= 0))
{
printf("甲:满框%d份,半框%d份,空框%d\n", x1, y1, z1);
printf("乙:满框%d份,半框%d份,空框%d\n", x2, y2, z2);
printf("丙:满框%d份,半框%d份,空框%d\n", x3, y3, z3);
printf("\n");
}
}
return 0;
}