使用数字 1,2,4,5,8 中随机的数字组合成一列数,让这一列的数之和为20。什么算法那?
例如 2,2,8,8 之和是20
1,2,4,5,8之和也是20。
谢谢各位了!
编写代码如下,可以稍加修改求N的和、积因子.
void test()
{
int N=20,M[5]={1,2,4,5,8};
for(int a=N/M[0];a>=0;a--)
{
for(int b=(N-a*M[1])/M[1];b>=0;b--)
{
for(int c=(N-a*M[0]-b*M[1])/M[2];c>=0;c--)
{
for(int d=(N-a*M[0]-b*M[1]-c*M[2])/M[3];d>=0;d--)
{
for(int e=(N-a*M[0]-b*M[1]-c*M[2]-d*M[3])/M[4];e>=0;e--)
{
if(a*M[0]+b*M[1]+c*M[2]+d*M[3]+e*M[4]==N)
printf("\n%d=%d*%d + %d*%d + %d*%d + %d*%d + %d*%d",N,M[0],a,M[1],b,M[2],c,M[3],d,M[4],e);
}
}
}
}
}
}