| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1070 人关注过本帖
标题:难题,来看看
只看楼主 加入收藏
hzf234
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-2-13
收藏
 问题点数:0 回复次数:12 
难题,来看看

编程序求某一数的所有分解数,如输入7,则输出:(要求输出不能重复)

7=6+1 7=4+1+1+1 7=2+3+2

7=5+2 7=3+3+1 7=2+2+2+1

7=5+1+1 7=3+2+2 7=2+2+1+1+1

7=4+3 7=3+2+1+1 7=2+1+1+1+1+1

7=4+2+1 7=3+1+1+1+1 7=1+1+1+1+1+1+1

搜索更多相关主题的帖子: 难题 
2005-03-22 18:12
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
递归应该可以做   不过好象运算量很大
还有其他的好办法没
等待.........

动于心而静如水
2005-03-22 19:22
coloar123
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 
有誰知道啊?

我想了一個鈡了

但是還沒有想出來

两耳不闻窗外事,专心只读圣贤书
2005-03-22 19:48
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
等做了作业  试试

动于心而静如水
2005-03-22 21:15
coloar123
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 
試出來了沒有啊?~~~~~~~~

两耳不闻窗外事,专心只读圣贤书
2005-03-23 13:52
笨驴
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-3-23
收藏
得分:0 
以下是引用hzf234在2005-3-22 18:12:09的发言:

编程序求某一数的所有分解数,如输入7,则输出:(要求输出不能重复)

7=6+1 7=4+1+1+1 7=2+3+2

7=5+2 7=3+3+1 7=2+2+2+1

7=5+1+1 7=3+2+2 7=2+2+1+1+1

7=4+3 7=3+2+1+1 7=2+1+1+1+1+1

7=4+2+1 7=3+1+1+1+1 7=1+1+1+1+1+1+1

楼主,这两句算不算重复!


我很笨,又很懒 课程设计都没做,现在想补一补课 大家帮帮我,别嫌我笨啊!
2005-03-23 18:47
ljzh_77
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-3-23
收藏
得分:0 
楼主,请快回答六楼的问题

2005-03-23 19:01
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 

#include <stdio.h> #include <stdlib.h> #include <conio.h>

void split_addition(int org_n,int n,int pos,int fillsize,int size,int *container);

int main() { int n; int *c; printf("Input a number :"); scanf("%d",&n); if(n<=0) { printf("Invaild input\n"); return 0; } else { c=(int*)malloc(n*sizeof(int)); if(!c) { printf("Cannot allocate memory!\n"); return 0; } split_addition(n,n,0,0,n,c); free(c); } getch(); return 1; }

void split_addition(int org_n,int n,int pos,int fillsize,int size,int *container) { if(n!=1) { register int i; for(i=1;i<n;i++) { container[pos]=i; pos++; n-=i; fillsize++; split_addition(org_n,n,pos,fillsize,size,container); pos--; fillsize--; n+=i; } } else { register int i; printf("%d=",org_n); for(i=0;i<fillsize;i++) { if(container[i]) { printf("%d",container[i]); printf("+"); } } printf("%d\n",n); } } 总觉得这个递归算法写得不太好,没有去除重复的答案,请高手指点。。。。。。

[此贴子已经被作者于2005-3-23 19:25:28编辑过]


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-03-23 19:23
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
程序总体思想应该是回朔法来确定所加值的范围吧,但我不知道如何把重复的答案去除。。。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-03-23 19:28
hzf234
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-2-13
收藏
得分:0 
以下是引用笨驴在2005-3-23 18:47:38的发言:

楼主,这两句算不算重复!

失误,应该不能重复

2005-03-23 22:29
快速回复:难题,来看看
数据加载中...
 
   



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

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