首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

提一小问,高手解决一下,该怎么处理

2012-02-29 
提一小问,高手解决一下请高手帮忙解决一下这个问题,应该是用矩阵方程解决,不知道程序该怎么写,请教请教。一

提一小问,高手解决一下
请高手帮忙解决一下这个问题,应该是用矩阵方程解决,不知道程序该怎么写,请教请教。
    一个商人有一个重40g的砝码(天平用的),一不小心掉到了地上,摔成了4小块,不过幸运的是这4小块的重量都是整数,商人用这4小块砝码可以称出1~40g以内的所有物品的重量,编程求出这4小块的重量

[解决办法]
/*
x,y,z,u组合最多可表示的数为下列情况之和
取一个数:C(4,1)=4
取两个数:2C(4,2)=12
取三个数:4C(4,3)=16
取四个数:8C(4,4)=8
相加得到刚好为40。
如要能表示1-40任意整数,则上面四种情况得出的情况不能有重复

假设这四个数为x,y,u,z,x+y+z+u=40,1 <=x <y <z <u <=36,x,y,z,u为正整数。
*/
#include "stdio.h "
#include "conio.h "
void main()
{
int x,y,z,u;
int i,j,flag=0;
int check[40];
for(x=1;x <40;x++)
for(y=x+1;y <40;y++)
for(z=y+1;z <40;z++)
for(u=z+1;u <40;u++)
{
check[0]=x; check[1]=y; check[2]=z; check[3]=u;

check[4]=y-x; check[5]=z-x; check[6]=u-x;
check[7]=y+x; check[8]=z+x; check[9]=u+x;
check[10]=z-y; check[11]=u-y; check[12]=u-z;
check[13]=z+y; check[14]=u+y; check[15]=u+z;

check[16]=x+y+z; check[17]=z+y-x; check[18]=z-y+x; check[19]=z-y-x;
check[20]=x+y+u; check[21]=u+y-x; check[22]=u-y+x; check[23]=u-y-x;
check[24]=x+u+z; check[25]=u+z-x; check[26]=u-z+x; check[27]=u-z-x;
check[28]=u+y+z; check[29]=u+y-z; check[30]=u-y+z; check[31]=u-y-z;

check[32]=u+z+y+x; check[33]=u+z+y-x; check[34]=u+z-y+x; check[35]=u-z+y+x;
check[36]=u+z-y-x; check[37]=u-z+y-x; check[38]=u-z-y+x; check[39]=u-z-y-x;

for(i=0;i <40;i++)
for(j=i+1;j <40;j++)
{
if(check[i]==check[j] && check[i] > 0 && check[j] > 0)
goto _here;
}
_here:
if(i==40)
{
printf( "%d,%d,%d,%d\n ",x,y,z,u);
getch();
}
}

}

热点排行