打印一个数组的全排列
2009-06-19 16:19
197 查看
#include <stdio.h>
#include <stdlib.h>
int static count=0;
void PrintFullArray(int array[], int length, int currentIndex)
{
int i,j;
if(currentIndex==1)
{
for(i=0;i<length;i++)
{
printf("%d",array[i]);
}
printf("/n");
count++;
}
else
{
for(i=0;i<currentIndex;i++)
{
int temp=array[i];
array[i]=array[currentIndex-1];
array[currentIndex-1]=temp;
PrintFullArray(array,length,currentIndex-1);
temp=array[i];
array[i]=array[currentIndex-1];
array[currentIndex-1]=temp;
}
}
}
int main(void)
{
int array[6]={1,2,3,4,5,6};
PrintFullArray(array,6,6);
printf("/nThe main count is:%d/n",count);
return 0;
}
#include <stdlib.h>
int static count=0;
void PrintFullArray(int array[], int length, int currentIndex)
{
int i,j;
if(currentIndex==1)
{
for(i=0;i<length;i++)
{
printf("%d",array[i]);
}
printf("/n");
count++;
}
else
{
for(i=0;i<currentIndex;i++)
{
int temp=array[i];
array[i]=array[currentIndex-1];
array[currentIndex-1]=temp;
PrintFullArray(array,length,currentIndex-1);
temp=array[i];
array[i]=array[currentIndex-1];
array[currentIndex-1]=temp;
}
}
}
int main(void)
{
int array[6]={1,2,3,4,5,6};
PrintFullArray(array,6,6);
printf("/nThe main count is:%d/n",count);
return 0;
}
相关文章推荐
- 第四题:如果一个字符数组中有重复的字符 如"abbcd" 那么如何编程打印其全排列
- 定义一个数组,编程打印它的全排列
- 打印一个含有重复元素数组的所有子集
- 求一个数组的全排列
- 有十个数按从大到小的顺序存放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素。如果该数不在数组中,则打印出“无此数”
- 定义一个长度为10的整型数组,循环输入10个整数。 并遍历打印该数组
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- P125.11打印出下列图形,每个字母对应一个数组元素。
- 线程同步面试题,3个线程打印一个1-100的数组,要求P1=1,P2=2,P3=3,P1=4的形式
- 编写一个函数print,打印一个学生的成绩数组
- 给定一个数组,求数组的全排列
- 如何在lua中打印一个数组(table)
- 算法3:给一个字符数组(a-z),如何打印该数组成员构成集合的全部子集合
- 给定一个数组,对该数组进行全排列
- 获得一个数组的全排列
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- 合法IP&窗口最大值数组&打印素数&递归逆序一个栈&栈排序另一个栈&MyString&寻找数组中出现的重复字符&数组中的重复数字&逆序打印链表&空格替换成%20
- 封装一个字符数组,实现增加,删除,替换,打印,搜索等功能
- 求一个数组的全排列,所有组合
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。