全排列-相邻交换法
2014-02-27 22:04
260 查看
整型数组
字符型数组
#include <stdio.h> void fullArray(int depth,int array[],int lenth) { if(lenth<=0) return; if(depth>=lenth) { int *p=array-depth; for(int i=0;i<lenth;i++) printf("%d ",p[i]); printf("\n"); return ; } //跳出条件为超出数组长度 for(int *p=array;p-array+depth<lenth;p++) { //简单交换法 int temp=*p; *p=*array; *array=temp; fullArray(depth+1,array+1,lenth); *array=*p; *p=temp; } } int main() { int test[]={1,2,3,4}; fullArray(0,test,4); return 0; }
字符型数组
#include <stdio.h> void fullArray(char *array,int lenth) { if(lenth<=0) return; if(!*array) { printf("%s\n",array-lenth); return ; } for(char *p=array;*p;p++) { char temp=*p; *p=*array; *array=temp; fullArray(array+1,lenth); *array=*p; *p=temp; } } int main() { char str[]="1234"; fullArray(str,4); return 0; }
相关文章推荐
- 两两交换(相邻)得到一个有序排列
- 单双链表,通过指针变动交换相邻元素
- 字符串全排列【方法2:利用交换的思想】
- javascript冒泡排序方法并统计相邻数交换次数
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 24. Swap Nodes in Pairs(每两个相邻节点进行一次交换)
- 打印数组a{1,2,...,n}的全排列(交换)
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 单链表交换相邻元素
- 交换链表相邻节点
- java 交换链表中所有相邻结点的顺序
- 交换单链表中相邻的两个点(人搜)
- Swap Nodes in Pairs 链表交换相邻的节点
- leetcode24,交换链表相邻的节点
- 通过只调整指针(而不是数据)来交换两个相邻的元素
- Java单链表基本操作(九)--交换相邻节点对的值
- 1-n个数排成一个圆环,定义距离为相邻两个数差的平方,求距离的和最大时,圆环的排列
- NOJ [1307] English Magic 字符串转化 3种操作 加1 减1 交换相邻字符
- java 实现排列组合Permutation and Combination和链式不相邻排列组合和环形不相邻排列
- Leetcode667. 求一种数组排列方式使数组相邻数值对有k个不同绝对值