| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1809 人关注过本帖
标题:[原创]实现解决问题的算法(二)
取消只看楼主 加入收藏
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
 问题点数:0 回复次数:2 
[原创]实现解决问题的算法(二)

1.穷举法<写于2004.9.28>(注:接...(一))

 我给它下的定义就是将所有一定范围内得出结果值列出来,进行分析;最终得到我们需要的结果值.  例如:打印出四张扑克牌相加等于24的所有可能出现的集合. 分析:我们知道扑克牌为数字珠是1到9;只有4张牌;我们很快就知道它们之间组合就有9*9*9*9=6561种组合,我们可以利用FOR循环语句来实现.然后再用IF判断语句在6561种组合中逐一进行分析得出我们最终想要的结果值. 最后用编码实现如下: #include<stdio.h> {int ri=0,i,j,k,m; for(i=1;i<=9;i++) for(j=1;j<=9;j++) for(k=1;k<=9;k++) for(m=1;m<=9;m++) if(i+j+k+m==24) {++ri; printf("%d %d %d %d",i,j,k,m);} printf("总共有%d种组合",ri);}

2.辅助法<2004.9.28> 我给它下的定义是:为了实现某一特定的问题.常常需要增加一些看似无用却又必须增加的量来进行辅助;以最终得到想要的结果值.这种方法,就称为"辅助法". 例如:打印下列有规律的分数序列. 2/1,3/2,5/3,8/5.....

分析:细心的网友可能发现了该数列有一个比较明显的规律.后一个数的分母是前一个数的分子,而后一个数的分子是前一个数的分子与分母之和.刚开始,我看到这个题目的时候,我想利用"子函数"的方式来实现.但后来用伪代码进行分析,发现其实不需要那么麻烦。只需要在其中设制一个“辅助”的变量就可以了。我用trubo C编制的源代码如下: #include<stdio.h> main() {int i=1,j=1,k,m=2,n; printf("您想看到几个:"); scanf("%d",&n); for(k=1;k<=n;k++) {printf("%d/%d",m,j); i=m; m=m+j; j=i;} 大家可以对这个源程序直观的分析一下,会看出变量"i"的值好像是多余的;但是如果去掉它却是万万不可。可以说这道题如果不用一个辅助变量就很难实现。 假设一下,如果我们把其变量的值不要,改为: ....... m=m+j; j=m; ....... 那么,很显然是不对的,虽然,我们的想法是第二个分数的分母等于第一个分数的分子加分母;但是第二句"j=m;".本来,我们想得到的值是前一个分子的值.但是,m的值这时已经被重新定义了.所以,这样做个是完全错误的.(未完待续三)

---------------------------------------------------

个人主页:wwweye.126.com

QQ:4360538

---------------------------------------------------

[此贴子已经被作者于2004-10-05 22:50:18编辑过]

搜索更多相关主题的帖子: 算法 
2004-10-05 22:49
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
得分:0 

谢谢网友提供的一些我以前未听说过的提高编程效率的算法。我现在正在阅读中!


个人主页:wwweye. C语言正在学习中...... --------------------------------------------------
2004-10-07 16:18
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
得分:0 
我的举的题是“打印出四张扑克牌相加等于24的所有可能出现的集合.”

个人主页:wwweye. C语言正在学习中...... --------------------------------------------------
2004-10-09 18:51
快速回复:[原创]实现解决问题的算法(二)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024879 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved