C语言程序设计最佳分组,求助把一些数值按指定的和进行分组

#include

#define m 10 //相加之和不超过的数据

#define n 9 //数值的个数

typedef struct

{

int num; //存储数值

int boolean; //凑数数值是否已经输出 .是0则未输出,是1则已经输出

}NUM; //存储数据的数据结构

NUM aa[n]; //存储数值

static int count=1;//存储输出的组数据

void FUN() //递归函数体

{

int i,temp=0;

for(i=0;i

{

temp=temp+aa[i].boolean; //把所有的boolean值加起来,如果总和小于n则有未输出的数

}

if(temp

{

temp=0; //清空缓存

printf("第%d组:",count++);

for(i=0;i

{

if(temp+aa[i].num<=m&&aa[i].boolean==0)

{

temp=temp+aa[i].num;

printf("%d ",aa[i].num);

aa[i].boolean=1;

}

else continue;

}

printf("\n");

}

else return; //如果数据都已经输出,退出递归

FUN();

}

void INPUT()

{

int i;

printf("*******************************本人已死##有事烧纸******************************\n");

printf("-------------------------------------------------------------QQ:54482733-------\n");

printf("请输入你要求分组的数据:\n");

for(i=0;i

{

scanf("%d",&aa[i].num);

aa[i].boolean=0;

getchar();

}

}

main()

{

INPUT();

FUN();

}附图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值