永发信息网

c语言西瓜问题

答案:2  悬赏:0  手机版
解决时间 2021-03-20 05:56
  • 提问者网友:酱爆肉
  • 2021-03-19 23:05
c语言西瓜问题
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-03-19 23:36
#include
int main()
{
int a[12]={98,93,57,64,50,82,18,34,69,56,16,61},sum = 0,b,c,d,e,f,g,i;
for(i = 0; i < 12; i++)
sum = sum + a[i];
for(b = 0; b < 6; b++)
{
for(c = b + 1; c < 7; c++)
{
for(d = c + 1; d < 8; d++)
{
for(e = d + 1; e < 9; e++)
{
for(f = e + 1; f < 10; f++)
{
for(g = f + 1; g < 11; g++)
{
if(a[b] + a[c] + a[d] + a[e] + a[f] + a[g] == sum/2)
{
printf("%d %d %d %d %d %d\n",a[b],a[c],a[d],a[e],a[f],a[g]);
for(i = 0; i < 12; i++)
{
if(i != b && i != c && i != d && i != e && i != f && i != g)
printf("%d ",a[i]);
}
printf("\n\n");
}
}
}
}
}
}
}
return 0;
}
全部回答
  • 1楼网友:胯下狙击手
  • 2021-03-20 00:36
其实想法相对好理解 就是12个数中任意选取其中6个数相加等于总和的一半,然后筛选出来,难点是如何穷举组合。
我大概写了个:(结果得到6组,实际上第一堆和第二堆位置颠倒,本质只有3组,可以看下)
#include
#include
void zuhe(int a[],int n,int m,int s)//从n个元素的数组a中,取m个元素的组合
{
int index,i,j,x=0,p[6],q[6];
int s2,l=1;
int item1[6],item2[6];
index=0;
p[index]=0;
while(1)
{
if(p[index]>=n)
{
if(index==0)
{
break;
}
index--;
p[index]++;
}
else if(index==m-1)//满足12选6组合
{
s2=0;
x=0;
for(i=0;i if(s2==s)//满足平分,得出第一堆p[6]
{
for(i=0;i<12;i++)
{
for(j=0;j if(i==p[j])break;
if(j==m)q[x++]=i;//筛选第二堆q[6]
}
printf("%d.",l);
printf("第一堆:");
for(i=0;i printf(" ");
printf("第二堆:");
for(i=0;i printf("\n");
l++;
}
p[index]++;
}
else
{
index++;
p[index]=p[index-1]+1;
}
}
}
main()
{
int i,s=0;
int items[12]={98,93,57,64,50,82,18,34,69,56,16,61};
for(i=0;i<12;i++)s+=items[i];
s/=2;//算出平分值
zuhe(items,12,6,s);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯