标题:这题是用动态规划来做么?
只看楼主
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
得分:0 
这么个小东西哪要画图辅助分析。
昨天中午看到帖子,感觉就是个递归因数分解的题,类似于找零钱组合,下午打麻将,晚饭后被老婆替下,玩游戏、看论坛,看到你回帖,就边玩游戏边构思,9:30开写,再花10分钟调试成功,估计带构思一起不到一小时吧。
2016-02-21 21:42
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
得分:0 
回复 11楼 拉链
大叔好,都结婚了。。。。
我还单身。。。cry
2016-02-21 22:27
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
得分:7 
看不懂啊
什么题
2016-02-22 09:25
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
得分:0 
回复 13楼 Alar30
看输入输出就知道了
2016-02-23 10:14
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
得分:0 
今天看到c论坛里的埃及分数题目,感觉可以用这个算法来做,才发现我在6楼的算法有错误,数据大了后就出现了重复(如540:【5,6,18】;【6,5,18】是重复),因此修改如下即可:
程序代码:
#include <stdio.h>
void ff(int a[],int n,int p)
{   //递归显示所有因数分解算式
    int i;
    i=p>0?1:0;  //第一次显示因数1
    for(;i<p;i++)printf("%d * ",a[i]);
    printf("%d * %d\n",a[i],n);   //显示算式
    if(a[p]*a[p]>n)return;
    for(i=p>0?a[p]:2;i*i<=n;i++)
    {
        if(!(n%i))
        {
            a[++p]=i;     //存储因数
            ff(a,n/i,p);  //递归调用
            p--;          //回溯,剪枝
        }
    }
}
void main()
{
    int n,a[100];
    scanf("%d",&n);
    a[0]=1;
    ff(a,n,0);
}

2016-03-01 12:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-461809-1-1.html




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

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