美文网首页
全排列问题

全排列问题

作者: km15 | 来源:发表于2020-01-30 18:15 被阅读0次

// 全排列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/*
解题:
1、递归式:填好怕p[1]~p[index - 1],准备填index,显然需要枚举1n,如果当前枚举数字没有再P[1]P[INDEX - 1]中,就将其填入index,并且hash置为true,然后去处理Index+1,当递归完成后,将hash[index]还原为false;
2、递归边界就是 n + 1;

learn && wrong:
1、最强其实是for+递归+hash
2、很难写其实...

*/

#include <iostream>
using namespace std;

const int maxn = 11;

//P为当前排列,hashtable记录整数x是否已经在P中
int n, p[maxn], hashtable[maxn] = { false };

//当前处理排列的第index位
void generatep(int index) {
    if (index == n + 1) {
        for (int i = 1;i <= n;++i) { //递归边界,已处理完1 ~ n位
            printf("%d", p[i]); //输出当前排列
        }
    }
    printf("\n");
    return;

    for (int x = 1;x <= n;x++) {  //枚举1~n,试图将x填入p[index]
        if (hashtable[x] == false) { //如果x不在p[0]~p[index - 1],
            p[index] = x;  //令p的index位为x,即把x加入P
            hashtable[x] = true; //标记x已经在队列中
            generatep(index + 1); //递归处理下一位
            hashtable[x] = false; //已经处理完p[index]为x的子问题,还原状态
        }
    }
}

int main()
{
    n = 3;
    generatep(1);
    return 0;
}

相关文章

  • 全排列问题

    中午看到的一个题目。求一个不重复字符串的全排列。 主要有递归,字典序等解决方案。然后想到stl里的next_per...

  • 全排列问题

    题目:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例:输入: [1,2,3] 输出:[ [1,2,...

  • 全排列问题

    // 全排列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。/*解题:1、递归式:填好怕...

  • 深度优先搜索

    全排列问题。 迷宫问题。

  • leetcode全排列问题

    1.leetcode47 题目: 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入:[1,1,...

  • 递归--全排列问题

    前置文章:递归算法:www.jianshu.com/p/703069f3ba3f . 递归问题有两个经典的...

  • 数组全排列问题

    最近看到剑指offer上一道数组全排列的题目,看似很简单,仔细分析一下,还是有点难以理解,特此在这拆解下,希望能够...

  • 全排列与n皇后的关系与递归实现

    全排列 对于全排列中的一般问题则是根据字典序从小到大输出指定数量或者序列的全排列。一个简单的问题则是:指定n个整数...

  • 全排列问题偷鸡做法

    全排列问题偷鸡摸狗做法用强大的(猥琐的)next_permutation 31. 下一个排列 46. 全排列 47...

  • 递归算法

    问题1:给定不重复的字符串,如123,给出全排列 分析:算123的全排列,首先算以1开头的23的全排列,然后再算以...

网友评论

      本文标题:全排列问题

      本文链接:https://www.haomeiwen.com/subject/gutwthtx.html