c语言递归全排列问题
2016-08-27 20:08
267 查看
#include"stdio.h"
#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))
void perm(int *list,int i,int n);
int main()
{
int arry[4]={1,2,3,4};
perm(arry,0,3);
return 0;
}
void perm(int *list,int i,int n)
{
int j,temp;
if(i==n)
{
for(j=0;j<=n;j++){
printf("%d",list[j]);
}
printf("\n");
}
else
{
for(j=i;j<=n;j++){
SWAP(list[i],list[j],temp);
perm(list,i+1,n);
SWAP(list[i],list[j],temp);
}
}
}
上段代码大致意思为:1,2 ,3 ,4 ,位4个大循环 每个1 2 3 4在分别递归循环,当满足要求 即 j = 3;这时打印出 排列字符串。
#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))
void perm(int *list,int i,int n);
int main()
{
int arry[4]={1,2,3,4};
perm(arry,0,3);
return 0;
}
void perm(int *list,int i,int n)
{
int j,temp;
if(i==n)
{
for(j=0;j<=n;j++){
printf("%d",list[j]);
}
printf("\n");
}
else
{
for(j=i;j<=n;j++){
SWAP(list[i],list[j],temp);
perm(list,i+1,n);
SWAP(list[i],list[j],temp);
}
}
}
上段代码大致意思为:1,2 ,3 ,4 ,位4个大循环 每个1 2 3 4在分别递归循环,当满足要求 即 j = 3;这时打印出 排列字符串。
相关文章推荐
- 全排列问题——浅谈递归
- 递归求全排列问题学习
- 深入理解递归:全排列问题
- 0002算法笔记——【递归】排列问题,整数划分问题,Hanoi问题
- C/C++ 排列组合问题(递归)
- 分治与递归(一)----全排列问题
- 01算法笔记——【递归】排列问题,整数划分问题,Hanoi问题
- 全排列问题问题的两种算法--递归与字典序
- 递归--数字(字母)排列问题
- C语言每日小练(三)——abc排列问题
- 八皇后问题 C语言,递归,非递归,循环!
- Java 非递归实现的排列组合中的平均分组问题
- C语言 N阶汉诺塔问题的递归实现
- 深入理解递归:全排列问题
- 全排列问题 递归实现
- 递归求解N皇后问题(c语言)
- 递归思路解决的四则运算问题,C语言
- 全排列---递归实现与分析(C语言)
- 递归--基于排列的八皇后问题解法
- C语言简单函数递归调用问题