| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖, 1 人收藏
标题:选路问题
只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
就算法这一块,我最欣赏的就是小曹,比我强,总能拓展我的思路。以后一定要多来哦!
收到的鲜花
  • xdh08172012-02-16 22:09 送鲜花  5朵   附言:我很赞同

重剑无锋,大巧不工
2012-02-16 17:46
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
回复 11楼 beyondyf
谢杨大哥

刚刚上了二专课程,计算导论,原来就是在讲c++语言基础。。我在想可不可以申请免听了,不知道老师讲的这些东西有没有必要再听一遍了
2012-02-16 21:31
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
我觉得可以了,再听一遍就是浪费时间了,如果有问题可以直接去找老师。呵呵,上学时我的数字电路也只上过几节,后来实在不想听就不去了。考试满分通过。
收到的鲜花
  • xdh08172012-02-16 22:09 送鲜花  5朵   附言:我很赞同
  • 于祥2012-02-17 13:59 送鲜花  5朵   附言:那你数电是自学的?

重剑无锋,大巧不工
2012-02-16 22:09
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
回复 8楼 beyondyf
不愧是版主,呵呵
2012-02-16 22:11
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
以下是引用beyondyf在2012-2-16 17:27:16的发言:

呵呵,这大概是个思维习惯。写了段示例
#include
#include
 
int path_count(int a, int b)
{
    int i, *p;
    if(a == 1 || b == 1) return 1;
    p = (int *)malloc(a * sizeof(int));
    for(i = 0; i < a; i++) p = i + 1;
    for(b -= 2; b--;)
    for(i = 1; i < a; i++) p += p1];
    i = p[a - 1];
    free(p);
    return i;
}
 
int main()
{
    int a, b; //a, b为横纵路线数,哪个是横,哪个是纵无所谓
    scanf("%d %d", &a, &b);
    printf("%d\n", path_count(a, b)); //注意数据范围
    return 0;
}

给点注释呗~~
看着短短几行,真不好理解呢~
2012-02-16 22:18
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
以下是引用beyondyf在2012-2-16 17:27:16的发言:

呵呵,这大概是个思维习惯。写了段示例
#include
#include
 
int path_count(int a, int b)
{
    int i, *p;
    if(a == 1 || b == 1) return 1;
    p = (int *)malloc(a * sizeof(int));
    for(i = 0; i < a; i++) p = i + 1;
    for(b -= 2; b--;)
    for(i = 1; i < a; i++) p += p1];
    i = p[a - 1];
    free(p);
    return i;
}
 
int main()
{
    int a, b; //a, b为横纵路线数,哪个是横,哪个是纵无所谓
    scanf("%d %d", &a, &b);
    printf("%d\n", path_count(a, b)); //注意数据范围
    return 0;
}


理解了!这么巧妙啊!怎么想出来的!
2012-02-16 22:34
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,那小曹所说的理解了没?这是重写的path_count。更短,更快。又让我想起了那句话,重剑无锋,大巧不工。
程序代码:
int path_count(int a, int b)
{
    int c, e, f, i;
    e = (a < b) ? a : b;
    f = a + b - 1;
    for(c = i = 1; i < e; i++)
        c = c * (f - i) / i;
    return c;
}

重剑无锋,大巧不工
2012-02-16 22:41
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
以下是引用慕羿在2012-2-16 16:44:28的发言:

很简单的递归:
 
进入递归体后,判断是否越界,若越界则直接返回。
未越界,则判断是否已达到目的地,若达到则输出路径。
皆非,则开始递归
首先向右一步,进入递归。
然后向上一步,进入递归。
over
 
由于问题的特殊性,不必考虑其它方向的递归。

有木有代码?
2012-02-16 22:58
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
回复 17楼 beyondyf

这个for看不懂了。。。。。


2012-02-16 23:00
慕羿
Rank: 4
等 级:业余侠客
帖 子:40
专家分:206
注 册:2012-2-16
收藏
得分:0 
以下是引用xdh0817在2012-2-16 22:58:23的发言:


有木有代码?

家里的机器上没有开发环境,而且我快把C忘光了。呵呵
2012-02-17 19:08
快速回复:选路问题
数据加载中...
 
   



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

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