- //数组的全排列输出 运行环境VS2010
- #include "stdafx.h"
- #include "stdio.h"
- #define MAX 3
- int num[MAX]={1,2,3};
- //#define MAX 4
- //int num[MAX]={1,2,3,4};
- //#define MAX 5
- //int num[MAX]={1,2,3,4,5};
- //#define MAX 6
- //int num[MAX]={1,2,3,4,5,6};
- //s-固定位,sc固定位个数,b变动位,bc变动位位数
- void AllSort(int s[],int sc,int b[],int bc)
- {
- if (bc==1)
- {
- for(int i=0;i<sc;i++)
- printf("%d ",s[i]);
- printf("%d\\n",b[0]);
- }
- else
- {
- for(int j=0;j<bc;j++)
- {
- s[sc]=b[j];
- int c[MAX];
- int count=0;
- for(int i=0;i<bc;i++)
- {
- if (i==j)
- continue;
- c[count++]=b[i];
- }
- AllSort(s,sc+1,c,bc-1);
- }
- }
- }
- int main()
- {
- int s[MAX];
- int sc=0;
- int bc=MAX;
- for(int j=0;j<MAX;j++)
- {
- s[sc]=num[j];
- int c[MAX];
- int count=0;
- for(int i=0;i<bc;i++)
- {
- if (i==j)
- continue;
- c[count++]=num[i];
- }
- AllSort(s,sc+1,c,bc-1);
- }
- getchar();
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/220820135311.html
来源: http://www.codesnippet.cn/detail/220820135311.html