| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 867 人关注过本帖
标题:如何实现全排列
只看楼主 加入收藏
tszhao
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-3-4
收藏
 问题点数:0 回复次数:4 
如何实现全排列
随便输入一个数字字符串,然后,将它的全排列全部输出来。
比如,输入123,则输出 123,132,213,231,321,312;
      输入331,则输出 331,313,133.
搜索更多相关主题的帖子: 排列 
2008-04-04 13:08
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你用循环吧..然后剔除相同项的排列....

学习需要安静。。海盗要重新来过。。
2008-04-04 19:06
baoyibao
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-3-13
收藏
得分:0 
可以用递归:
#include <iostream>

template<class T>
inline void swap( T& a, T& b )
{
    T tmp = a;
    a = b;
    b = tmp;
}

template<class T>
void Perm( T list[], int start, int end )
{
    int i;
   
    if ( start == end )
    {
        for ( i = 0; i <= end; i++ )
            cout << list[i];
        cout << endl;
    }
    else
        for ( i = start; i <= end; i++ )
        {
            swap( list[start], list[i] );
            Perm( list, start+1, end );
            swap( list[start], list[i] );
        }
}

void main()
{
    int list[] = {1,2,3,4,5};
    Perm( list, 0, 4 );
}
2008-04-04 23:36
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
这个题目我做过好几遍了..以前都是用递归..发觉循环也可以做..呵呵..而且不像递归那样难理解...你的写的不错..很经典..呵呵

[[it] 本帖最后由 sunkaidong 于 2008-4-5 09:41 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-04-05 09:35
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
stl中next_permutation就是使用的迭代算法。

Fight  to win  or  die...
2008-04-05 11:29
快速回复:如何实现全排列
数据加载中...
 
   



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

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