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

只用加法算的24的好象没几个组合啊,实际上应该是我所说的那样,用+、-、×、÷四种运算符算出24的。

希望各位高手要是会的话就做出来让菜鸟们都看看。(我也是菜,所以我也不会)


2004-10-10 20:03
l1288
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-10-8
收藏
得分:0 

我觉的要用字符组,把"+,-,*,/",附给它,然后就用循环了.不知道行不行啊!

2004-10-10 22:58
l1288
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-10-8
收藏
得分:0 
我也是初学,菜的要命,不要笑啊!!
2004-10-10 23:01
求识心切
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-10-8
收藏
得分:0 

听君一席话,胜读十年书~~~~~~~~~

我顶~~~~~~~~~~~~~~~~~~~···


2004-10-11 11:17
xueer
Rank: 1
等 级:新手上路
威 望:1
帖 子:511
专家分:0
注 册:2004-10-8
收藏
得分:0 

只要想的出来就能行的  我觉得能行,可以考虑  (菜的很,要是不行的话再打自己一个嘴巴子然后说:"不行")

呵呵!~~~~~~~~~~~~~


2004-10-11 21:06
ydfq
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-7-9
收藏
得分:0 
乌鸦丘比特大哥,如果你可以把你列出的算法再给予些例子的话更好一点!菜鸟喜欢多看源程序帮助理解!呵呵!

2005-02-02 20:00
CanFly
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-1-30
收藏
得分:0 
感谢大家....
2005-02-02 20:46
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
收藏
得分:0 

对第二个问题,并不是一定要一个额外的变量: #include<stdio.h>

main() { int j=1,k,m=2,n; printf("您想看到几个:"); scanf("%d",&n); for(k=1;k<=n;k++) { printf("%d/%d",m,j); m=m+j; j=m-j; // 既然m只是比需要的值多了j,那么去掉它就可以了:) } }


Have you visit acm.tongji. lately?
2005-02-02 21:53
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
收藏
得分:0 
btw.扑克牌的点数可不是1..9而已啊。

Have you visit acm.tongji. lately?
2005-02-02 21:56
白瓜
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-1-27
收藏
得分:0 
以下是引用竹本鸟在2004-10-5 22:49:37的发言:

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的值这时已经被重新定义了.所以,这样做个是完全错误的.(未完待续三)

对于这一个问题我到谭老师的书上看过,当时我就没有按他想的这样设一个i , 我是这样做的,大家帮看看: #include<stdio.h> main() {int j=1,k,m=2,n; printf("您想看到几个:"); scanf("%d",&n); for(k=1;k<=n;k++) {printf("%d/%d",m,j); m=m+j; j=m-j; } } 我是这样想的,等号是从右向左算,程序是从上到下的,所以流程为: m=2 j=1 printf 2/1 m=m+j=2+1=3 j=m-j=3-1=2 printf 3/2 m=m+j=3+2=5 j=m-j=5-2=3 printf 5/3 ...... 所以我对这个朋友说的“会看出变量"i"的值好像是多余的;但是如果去掉它却是万万不可。可以说这道题如果不用一个辅助变量就很难实现。”这一句话有点不解。 只是这种方法是大大可行的,在好多地方也是挺方便的。 不过也许我说这样写的有点问题,我也没有到电脑上去试。还请哪位朋友帮我看一下,先谢了。 不好意思 ,没有看完贴子就发了,原来有人早就下手了。 呵呵。

[此贴子已经被作者于2005-2-3 11:56:42编辑过]


---------------------------------- 我不想当菜鸟 所以 我一直在努力 ----------------------------------
2005-02-03 11:54
快速回复:[原创]实现解决问题的算法(二)
数据加载中...
 
   



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

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