VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 323|回复: 1

[交流] 全排列算法

[复制链接]
72_avatar_middle
在线会员 发表于 2019-6-5 18:29:02 | 显示全部楼层 |阅读模式
#include <stdio.h>
/*
        s:待排列的全部数据
        end:当前交换的位置
        begin:待交换的位置
*/
int is_dup(char *s, int end, int begin)
{
        int i = 0;
        for (i = end; i > begin; i--)
        {
                if (s[end] == s[i - 1])
                {
                        return 1;
                }
        }
        return 0;
}
void peimutation(char *s, int b, int e)//b为起始位置,e为结束位置
{
        if ((b >= 0) && (b <= e) && (s != NULL) && (*s != 0))
        {
                if (b == e)
                {
                        printf("%s\n", s);
                }
                else
                {
                        int i = 0;
                        int j = 0;
                        for (i = b; i <= e; i++)
                        {
                                if (!is_dup(s, i, b))
                                {
                                        char c = s[b];
                                        s[b] = s[i];
                                        s[i] = c;

                                        peimutation(s, b + 1, e);

                                        c = s[b];
                                        s[b] = s[i];
                                        s[i] = c;
                                }
                        }
                }
        }
}
int main()
{
        char s[] = "abac";
        peimutation(s, 0, 3);
        return 0;
}





上一篇:求助…最小生成数算法问题,请各大网友帮忙…
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-9-21 07:46

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表