//题目: 法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)中提出了一个问题:
一位商人有一个重40磅的砝码,一天不小心将砝码摔成了四块。后来商人称
得每块的重量都是整磅数,而且发现用这四块碎片可以在天平上称1至40磅之
间的任意重量。请问这四块碎片各重多少?
思路:
1.缩小各个砝码的范围,制造四个砝码的关系;穷举;
2.四砝码加减可得40以内的数,穷举;
3.满足即报数。
#include "Stdio.h"
int main()
{
int a, b, c, d;
int x, y, z, k;
int i,j;
for (a=1; a<9; a++)
{
for (b=1+a; b<39-a; b++)
{
for (c=1+b; c<39-a-b; c++)
{
d=40-a-b-c;
if(d>c)
{
j=1;
for(i=1; i<41 && j==1; i++)
{
j=0;
for(x=-1; x<2; x++)
{
for(y=-1; y<2; y++)
{
for(z=-1; z<2; z++)
{
for(k=-1; k<2; k++)
{
if(i == x*a+y*b+z*c+k*d)
{
j=1;
}
}
}
}
}
}
}
if(j==1)
{
printf("%d\n%d\n%d\n%d\n\n",a,b,c,d);
}
}
}
}
/* 此处添加你自己的代码 */
getch();
return 0;
}