主题:关于银行存款最优方案的修改,请高手帮忙看看~
天天甜甜
[专家分:10] 发布于 2010-04-20 17:36:00
#include <stdio.h>
void main()
{
int N,n1,n2,n3,n4,n5,t;
float y,max=0;
N=10000;
for (n5=0;n5<=2;n5++)
for(n4=0;n4<=4;n4++)
for(n3=0;n3<=6;n3++)
for(n2=0;n2<=10;n2++)
for(n1=0;n1<=20;n1++)
{ t=n1+2*n2+3*n3+5*n4+8*n5;
if (t==20)
y=N*(1+0.0225)*n1+N*(1+2*0.027)*n2+N*(1+3*0.0324)*n3+N*(1+5*0.036)*n4+N*(1+8*0.04)*n5;
if(max<y)
{
max=y;
printf("一年期存%d年\n两年期存%d年\n三年期存%d年\n五年期存%d年\n八年期存%d年\n",n1,n2,n3,n4,n5);
}
}
printf("本息和为%.2f\n",max);
}
回复列表 (共10个回复)
沙发
PP_make [专家分:60] 发布于 2010-04-20 18:14:00
在这方面最好使用switch 语句来处理,你使用了5个for 的嵌套语句,显然已经很多了,弊端很大,容易出错的!而且程序的可读性也变得很差,运行起来效率也是很低的!
板凳
雪光风剑 [专家分:27190] 发布于 2010-04-20 19:09:00
ls这个帖子回得(我不想打击人,这个词我不说了),穷举的题用switch做什么……穷举的题用switch写还不如手算出答案……
程序思路还是有问题,你算出的max年数太多了。循环里应该保存下当前的n1到n5(开另外的变量保存)而不是即时输出
for循环过多的问题是由于问题尚未优化
最简单的优化是去掉关于n1的循环,直接用n1=20-n2*2-n3*3-n4*5-n5*8;计算出n1,判断条件当然要相应改成if(n1>=0)
3 楼
天天甜甜 [专家分:10] 发布于 2010-04-20 20:11:00
谢谢两位!我们正学到for语句,是要求用循环来写的~
4 楼
眉县张毅军 [专家分:0] 发布于 2010-04-20 20:25:00
急求visual basic.net 下载地址
5 楼
PP_make [专家分:60] 发布于 2010-04-20 23:08:00
呵呵,你这人到时挺牛逼的!!那你用手指掰给我算算看?!!每个人有自己的思路和想法,要学习去尊重别人的意见!懂吗?!!不要认为自己很强似的!!我身边的高手多的是了,你算什么啊?!
6 楼
雪光风剑 [专家分:27190] 发布于 2010-04-20 23:23:00
我确实能用手掰着把这道题算出来……我也确实想不通怎么用switch去穷举,您是牛人,麻烦您教教我怎么用switch来穷举吧……
7 楼
PP_make [专家分:60] 发布于 2010-04-21 22:58:00
你先用手指加脚趾掰算出来,我再给你用switch 给你穷举出来,好吧?!
8 楼
雪光风剑 [专家分:27190] 发布于 2010-04-21 23:15:00
还是劳驾您先用switch穷举一下我看看吧,这两天为了琢磨switch怎么用在穷举上费了我真的不少脑细胞了
9 楼
cxxcomp [专家分:2370] 发布于 2010-04-24 11:54:00
[quote]在这方面最好使用switch 语句来处理,你使用了5个for 的嵌套语句,显然已经很多了,弊端很大,容易出错的!而且程序的可读性也变得很差,运行起来效率也是很低的![/quote]
学习了!!!“这方面....."?哪方面啊?
不好意思,实在想说句粗话,扯JB蛋你也分个地方!实在很莫名,实在很奇妙,不知道您的switch和穷举有什么藕断丝连的关系?!
另外,其他的都不必说了,代码的干活,你把用switch实现的,贴出来,让偶们这些粗人也学习学习。
10 楼
xuhuilong [专家分:0] 发布于 2010-04-24 13:56:00
莫吵了
我想想看看原题
这么多for循环我是看不懂的
我来回复