| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 451 人关注过本帖
标题:怎样得到一串字符的全拍列
只看楼主 加入收藏
c人er
Rank: 2
来 自:武汉理工大学
等 级:论坛游民
帖 子:45
专家分:56
注 册:2013-3-22
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
怎样得到一串字符的全拍列
比如我输入abc后输出:abc,acb,cab,cba,bac,bca.
输入123后输出123,132,321,312,213,231
搜索更多相关主题的帖子: abc 132 
2013-03-26 21:37
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:1 
可以用递归函数做

三十年河东,三十年河西,莫欺少年穷!
2013-03-26 21:41
X1AO
Rank: 3Rank: 3
来 自:北京邮电大学
等 级:论坛游侠
威 望:1
帖 子:52
专家分:123
注 册:2013-3-6
收藏
得分:3 
程序代码:
//全排列的递归实现
#include <stdio.h>
#include <string.h>
void Swap(char *a, char *b)
{
    char t = *a;
    *a = *b;
    *b = t;
}
//k表示当前选取到第几个数,m表示共有多少数.
void AllRange(char *pszStr, int k, int m)
{
    if (k == m)
    {
        static int s_i = 1;
        printf("  第%3d个排列\t%s\n", s_i++, pszStr);
    }
    else
    {
        for (int i = k; i <= m; i++) //第i个数分别与它后面的数字交换就能得到新的排列
        {
            Swap(pszStr + k, pszStr + i);
            AllRange(pszStr, k + 1, m);
            Swap(pszStr + k, pszStr + i);
        }
    }
}
void Foo(char *pszStr)
{
    AllRange(pszStr, 0, strlen(pszStr) - 1);
}
int main()
{
    char szTextStr[] = "123";
    printf("%s的全排列如下:\n", szTextStr);
    Foo(szTextStr);
    return 0;
}

不要问我下课干什么,我陪瓜哥上厕所。
2013-03-27 17:36
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:1 
蹭分
2013-03-27 17:56
快速回复:怎样得到一串字符的全拍列
数据加载中...
 
   



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

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