| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:求一个好的解决方法!
只看楼主 加入收藏
lchpersonal
Rank: 2
等 级:论坛游民
威 望:1
帖 子:34
专家分:81
注 册:2012-7-27
收藏
得分:0 
回复 3楼 heishu
你的算法还可以优化的! 红色的地方是添加的,你看看对不对?
#include<stdio.h>
int a[100];
int qiuhe(int *q,int n)          //求和函数
{int i,he=0;
for(i=0;i<n;i++)
he+=q[i];
return he;

}
void zhonglei(int j,int k)
{int i,sum;
sum=qiuhe(a,j);
    if(20==sum&&j!=1)         //符合条件的输出
    {
    for(i=0;i<j;i++)
    {printf("%d",a[i]);
    if(i<j-1)
    printf("+");
    }
    printf("=20\n");
   
    }
    else if(j<7)
    {
        for(i=k;i<=20;i++)           //不回溯递归
        {
        a[j]=i;
        zhonglei(j+1,k+1);
        ++k;
        }
   
   
    }
}
void main()
{
zhonglei(0,0);
}

重剑无锋,大巧不工
2012-10-22 23:20
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用神之右手在2012-10-21 22:06:21的发言:

    向3楼和6楼学习,虽然6楼的算法我没看明白,不过是高手就值得我们尊敬!
    还有,我第一次知道原来for循环还可以这样用:for(; printf("\nInput number (0 for exit): "), scanf("%d", &n), n; decompose(n));受教了,望多多指导!!!

我不建议把 for 写成这样。因为这样写不能提高紧凑性,反而让代码看上去变乱了。
高手写有高手追求的其它目的,或是个人习惯问题。但这种写法不一定值得学习。
一般认为 尽量让一个语句做一件事 是种好习惯。


不过这段代码展示的编码技巧很值得学习。


[ 本帖最后由 pangding 于 2012-10-27 10:39 编辑 ]
2012-10-27 10:37
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,如果不能理解我的意图,确实不要轻意模仿我的代码风格。否则画虎不成反类犬。

用物来比喻:

这种代码属于艺术品,更注重的是表达作者的思想。

而商业代码属于工业品,其追求的是尽快的实现达到标准(不一定要最好,因为越好成本越高)产品。

为了这一点它会需要多人配合完成。

为了降低配合的难度,必须抹杀个性。

用军队来比喻:

商业代码属于大规模集团军,注重的是宏观上的协调配合,所以对士兵的训练要求低,强调的是整齐划一,服从命令听指挥。

而我的这种代码属于特种兵,更强调单兵的作战能力。


这里并没有说孰优孰劣的意思,重要的是分清场合。

我在做项目级应用的时候写的代码很规范,只有在个人把玩算法时才这么写。

会写草书的人,没有不会写楷书的,呵呵。

重剑无锋,大巧不工
2012-10-27 12:01
快速回复:求一个好的解决方法!
数据加载中...
 
   



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

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