问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大。(c语言)

发布网友 发布时间:2022-04-14 15:38

我来回答

1个回答

热心网友 时间:2022-04-14 17:07

我不写完整程序,提一下思路:

我们要编写一个函数,这个函数把一个数分为两个数之和,并且这两个数的乘积最大,这样的函数是不是很好编写,代码如下:
void f1(int a, int *x,int *y){
*x=a/2;
*y=a-*x;
}
知道为什么这样分吗,原理很简单:两个数都最大的时候,乘积才最大。也就是各取一半,如果a是奇数就让y多1。

要完成把N分为多个数,使其乘积最大,我们就先分为两个数,然后分别对这两个数进行各自进行拆分(递归调用),直到分开的两个数乘积比分前小,那就取消这次拆分。

基于以上说明,我们对f1函数进行修改,增加递归调用部分:
void f1(int n){
int x,y;
x=n/2;
y=n-x;
if (n>=x*y) printf("%d ",n);
else {f1(x);f1(y);}
}

添加计算乘积m的代码,以及主程序,完成的如下:

-----------------
int m;

void f1(int n){
int x,y;
x=n/2;
y=n-x;
if (n>=x*y) {printf("%d ",n);m*=n;}
else {f1(x);f1(y);}
}

main(){
int n;
m=1;
scanf("%d",&n);
f1(n);
printf("\n%d",m);
}
-----------------
程序在SCO UNIX上运行通过,结果如下:
-----------------
$ cc a.c
$ a.out
9
4 2 3
24
$ a.out
10
2 3 2 3
36
$ a.out
12
3 3 3 3
81
$
-----------------
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 卡诺莎四星干红葡萄酒,这瓶大概多少钱 卡诺莎三星干红葡萄酒2014价格? 卡诺莎葡萄酒酒怎么样 朋友送了两瓶卡诺莎葡萄酒,放了很久了都没喝,这种酒有保质期吗? 谁知道有一种叫卡诺莎的葡萄酒是不是真的?多少钱一瓶? 卡诺莎的红酒怎么样? 卡诺莎葡萄酒品质怎么样? 80平方装两个大三匹好还是一个5匹空调加一个两匹空调好? 80平方米的客厅用几匹空调柜机合适? 80平方店面适合买多少匹的柜式空调 金正nintaus怎么连接内网 脱口罩时避免接触口罩哪里 请问oppo f3 可以升级安卓8吗? OPPO F3 F3 PLUS售价多少 激光祛痘印哪些副作用 芭芭柑这种树怎么防寒? 医疗做激光去痘印会留疤吗? 请问四川绵阳三台哪里能买到沃柑,大雅,丑柑,耙耙柑这些柑橘树苗??? 激光去痘印有什么副作用 我买了棵耙耙柑树五个月了还没发芽但根部是绿色的怎么了? 苹果4S怎么刷系统 放弃发展对象身份的后果 棕色t血衫女怎么配 嘉兴市新兴街道运南社区大概有多少户家庭,其中60岁以上老年*概有多少人? 衣服 体血衫 的尺码 180 185 是什么意思?? 我的有蓝色的体血衫,这些体血衫都很酷很好看的英文? c语言 有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大 【十五周年】#实力与颜值并存,秀出我的VV5! 车内配置大升级 2021款VV5将于9月20日正式上市 当第一眼遇见WEY VV5,便无法自拔,感谢我们的相遇 舒适的座驾,WEY VV5,更是对我出行安全的一种守护 标配自适应巡航、紧急制动功能 新款VV5上市 12.58万起售 看那俊朗的SUV却是冬日最美的温馨——开上魏派VV5去冰天雪地撒欢 用冰淇淋做奶酪怎么做?都加什么东西? 怎么做雪糕或者奶酪吃啊? 怎么制作冰淇淋??说详细的哦!! 收到中信银行信用卡短信确认办理表示已经审核通过了吗 全屋整装与集成墙面有什么区别? 网上申请的中信银行信用卡,发信息通知已通过初审,这样的情况会通过审核吗? 你好 办理中信信用卡显示审核通过 我们会以短信形式通知面签时间和网点 是表示已经办理成功么