求高手~这种类型的该怎么解决
/*4、一个重40磅的砝码,摔成了四块,且都是整磅数,而且用这四块碎片可以在天平上称1至40磅之间的任意重量。求这四块碎片各重多少?*/ 有谁会的啊?
#include "stdio.h"
#include "algorithm"
main()
{using namespace std;
int test[4],i;
int flag=1;
for(test[0]=1;test[0]<40;test[0]++)
for(test[1]=1;test[1]<40;test[1]++)
for(test[2]=1;test[2]<40;test[2]++)
for(test[3]=1;test[3]<40;test[3]++)
do{
for(int i=1;i<=40;i++)
if((test[0]+test[2]+test[1]+test[3]==40)&&(test[0]==i||test[1]==i||test[2]==i||test[3]==i
||test[0]+test[1]-test[3]==i||test[0]+test[1]-test[2]==i||test[1]+test[2]-test[0]==i||test[1]+test[2]-test[3]==i||test[1]+test[3]-test[2]==i||test[1]+test[3]-test[0]==i||test[0]+test[3]-test[1]==i||test[0]+test[3]-test[2]==i
||test[0]+test[1]-(test[3]+test[2])==i||test[3]+test[2]-(test[0]+test[1])==i||test[0]+test[3]-(test[1]+test[2])==i||test[2]+test[1]-(test[0]+test[3])==i
||test[0]+test[1]+test[2]-test[3]==i||test[0]+test[1]+test[3]-test[2]==i||test[1]+test[2]+test[3]-test[0]==i||test[0]+test[2]+test[3]-test[1]==i))
要等到if里面运行i从1到40 才输出 怎么写啊???
printf("%d %d %d %d \n",test[0],test[1],test[2],test[3]);
}while(flag==next_permutation(test,test+4));
}
[ 本帖最后由 bccn_0934 于 2011-7-8 21:13 编辑 ]