【演算法】遞迴實現全排列
具體參考:
//全排列的遞迴實現
#include <stdio.h>
#include <string.h>
void Swap(char *a, char *b)
{
char t = *a;
*a = *b;
*b = t;
}
//
void AllRange(char *str, int first, int last)
{
int i;
if (first == last)
{
static int count = 1;
printf("第%d個排列\t%s\n", count++, str);
}
else
{
for (i = first; i <= last; i++) //第k個數分別與它後面的數字交換就能得到新的排列
{
Swap(str + first, str + i);
AllRange(str, first + 1, last);
Swap(str + first, str + i);
}
}
}
int main()
{
char str[] = "abc";
printf("%s的全排列如下:\n", str);
AllRange(str, 0, strlen(str)-1);
return 0;
}
相關文章
- 遞迴演算法實踐---實現排列組合遞迴演算法
- 全排列的實現之遞迴版與迭代版遞迴
- 遞迴-*全排列問題遞迴
- 遞迴解決全排列問題遞迴
- 全排列演算法演算法
- 演算法——全排列演算法
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- 棧實現遞迴遞迴
- lambda實現遞迴遞迴
- 【Algorithm】全排列演算法Go演算法
- Day 28 | 491.遞增子序列 、46.全排列、 47.全排列 II
- 遞迴實現原則遞迴
- 從基礎講全排列(Java實現)Java
- 全排列及相關擴充套件演算法(二)——求字典序下一組排列及全排列演算法套件演算法
- 遞迴演算法遞迴演算法
- python-動態規劃的遞迴、非遞迴實現Python動態規劃遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 前端演算法題:JS遞迴實現楊輝三角前端演算法JS遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 【演算法】遞迴演算法演算法遞迴
- 尾遞迴實現深複製遞迴
- c#遞迴實現 階乘C#遞迴
- C#實現FFT(遞迴法)C#FFT遞迴
- Java遞迴演算法Java遞迴演算法
- 遞迴演算法要素遞迴演算法
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 程式碼隨想錄演算法訓練營day29 | leetcode 491. 非遞減子序列、46. 全排列、47. 全排列 II演算法LeetCode
- LeetCode46 回溯演算法求全排列,這次是真全排列LeetCode演算法
- 演算法初探--遞迴演算法演算法遞迴
- 全域性元件實現遞迴樹,避免迴圈引用元件遞迴
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- 前端電商 sku 的全排列演算法前端演算法
- 用 Promise + 遞迴實現灌酒動畫Promise遞迴動畫
- Java實現多級選單(遞迴)Java遞迴
- 遞迴實現指數型列舉遞迴
- 歸併排序的非遞迴實現排序遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴