加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C实现生成n个元素的全排列

发布时间:2020-12-16 07:45:42 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 用递归实现 n 个元素的全排列。 // =====================【全排列】==================#include stdio.h#include stdlib.h#define NUM 4char arr[NUM

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

用递归实现 n 个元素的全排列。
// =====================【全排列】==================

#include <stdio.h>
#include <stdlib.h>

#define NUM 4
char arr[NUM] = { 0 };

int m_solution_num = 0;

void init()
{
    for (int i = 0; i != NUM; i++)
    {
        arr[i] = 'A' + i;
    }
}

void output()
{
    printf("第%d组解为:n",++m_solution_num);
    for (int i = 0; i != NUM; i++)
    {
        printf("%ct",arr[i]);
    }
    printf("n");
}

void swap(char * a,char * b)
{
    char aa = *a;
    char bb = *b;

    aa = aa ^ bb;
    bb = aa ^ bb;
    aa = aa ^ bb;

    *a = aa;
    *b = bb;
}

void solve(int curpos)
{
    if (curpos >= NUM)
    {
        output();
        return;
    }

    // 原来写的是0, 这里应该是curpos
    for (int i = curpos; i != NUM; i++)
    {
        swap(&arr[curpos],&arr[i]);
        solve(++i);
        --i;
        swap(&arr[curpos],&arr[i]);

    }
}

void main()
{
    init();
    solve(0);
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读