当前位置: 代码迷 >> C语言 >> 组合题
  详细解决方案

组合题

热度:133   发布时间:2006-04-18 16:27:00.0
组合题
1234567 七个数,求和小于等于15的所有最大组合,即组合中再加入另外一个数和就大于15


----------------解决方案--------------------------------------------------------

main()
{
int i,j,n,m=1;
int num[8][8];
int sum;
for(i=1;i<7;i++)
{
n=2;
sum=i;
num[1][m]=i;printf("%d ",i);
for(j=i+1;j<=7;j++)
{
sum+=j;
if(sum<=15)
{
num[n][m]=j;printf("%d ",j);
n++;
}
else
{
m++; printf("=%d\n",sum-j);
break;
}
}
}

getch();
}
你要是只是为了输出的话,你可以把红色的部分删掉就行!


----------------解决方案--------------------------------------------------------

先谢了


----------------解决方案--------------------------------------------------------
不过 组合好象不太全  象761,753,7521之类的都没有啊!!!
----------------解决方案--------------------------------------------------------
我写的程序不对
我刚才去上课去拉
刚回来
没办法只好明天给你答案拉。。。。。。
----------------解决方案--------------------------------------------------------

main()
{
int i,j,k,m;
int num[8][93];
int sum[93],numl[8];
int nl=1;

nl=1;
numl[0]=1;
for(i=1;i<=7;i++)
{
numl[i]=numl[i-1];
while(getch()==27)exit(0);
for(k=1;k<=numl[i-1]*(i>1)-numl[i-2*(i>1)]*(i>1)+(i==1);k++)
{
for(j=num[i-(i>1)][numl[i-2*(i>1)]*(i>1)+k-1]*(i>1)+1;j<=7;j++)
{
if(j+sum[numl[i-2*(i>1)]+k-1]*(i>1)<=15)
{
for(m=1;m<=i-1;m++)
{
num[m][nl]=num[m][numl[i-2*(i>1)]+k-1];
printf("%d ",num[m][nl]);
}
num[i][nl]=j;printf("%d ",j);
sum[nl]=j+sum[numl[i-2*(i>1)]+k-1]*(i>1);printf("sum=%d \n",sum[nl]);
nl++;
numl[i]++;
}
else
break;

}

}
}
printf("OVER!");
getch();
}
靠的!
这道题是不好做

就因为少一个=忙呼了一个小时!


----------------解决方案--------------------------------------------------------

楼上的不对(结果)


----------------解决方案--------------------------------------------------------
  相关解决方案