| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:问个全排列的问题
只看楼主 加入收藏
zkkpal
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-26
结帖率:100%
收藏
 问题点数:0 回复次数:3 
问个全排列的问题
#include<stdio.h>

void f(int a, int b, int c)
{
    printf("%d%d%d/", a, b, c);   
    if(a == 3 && b == 2 && c == 1)
        return;
    if(b < c)
        f(a, c, b);
    else if(a < b)
    {
        if(a < c)
            f(c, a, b);
        else
            f(b, c, a);
    }
}

int main()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    f(a, b, c);
    printf("\n");
    return 0;
}
输入: 1 3 2
输出: 132/213/231/312/321/

为什么我算得是132/321/
谁给说下过程
搜索更多相关主题的帖子: 排列 
2009-10-16 23:39
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:0 
很简单啊  一步步执行就行了
没有什么困难的地方

~~~~~~我的明天我知道~~~。
2009-10-17 00:07
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
没有问题的,我在WINTC和TC下编译通过,结果也正确。

离恨恰如春草,更行更远还生。
2009-10-17 00:24
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
我说下过程,输入:1 3 2
程序代码:
1   3  2 带进函数
void f(int a, int b, int c) 
{ 
    printf("%d%d%d/", a, b, c);    输出:132/ 
    if(a == 3 && b == 2 && c == 1) 判断不成立
        return; 
    if(b < c)  判断不成立
        f(a, c, b); 
    else if(a < b)  判断成立 
    { 
        if(a < c) 判断成立
            f(c, a, b);  递归,看做再次调用f函数↓   2  1  3  带入函数
        else                   void f(int a, int b, int c)
            f(b, c, a);          {
    }                              printf("%d%d%d/", a, b, c);    输出:213/ 
}                                  if(a == 3 && b == 2 && c == 1) 判断不成立 
                                     return; 
                                   if(b < c)   判断成立
                                       f(a, c, b);    再调用 2  3  1  带入调用的函数。
                                   else if(a < b) 
                                      { 
                                        if(a < c) 
                                           f(c, a, b); 
                                        else 
                                        f(b, c, a); 
                                      } 
                                  } 
说了前两次的函数调用,后面几次调用你自己也都可以算出了。


[ 本帖最后由 UserYuH 于 2009-10-17 02:24 编辑 ]

努力—前进—变老—退休—入土
2009-10-17 02:22
快速回复:问个全排列的问题
数据加载中...
 
   



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

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