输出结果为:123,132,213,231,321,312
(告诉我程序的思想也可以)
//有注释,自己看把 #include <stdio.h> #include <stdlib.h> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //定义外部的全局变量 int PCount=1; int * ipoint; int IntNumber;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //定义交换函数 void swap(int &a,int &b) { int temp; temp = a; a = b; b = temp; }
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //排列组合函数 void perml(int m) {
if(m==IntNumber-1) { printf("第%d组排列组合如下: \n",PCount); PCount++; for(int i=0;i<IntNumber;i++) printf("%3d",*(ipoint+i)); printf("\n"); } else for(int j=m;j<IntNumber;j++) { swap(*(ipoint+j),*(ipoint+m)); perml(m+1); swap(*(ipoint+j),*(ipoint+m)); } }
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //主函数 void main() { printf("请输入要排列的正整数:\n"); scanf("%d",&IntNumber); ipoint = (int *)malloc(IntNumber*sizeof(int)); for(int i=0;i<IntNumber;i++) *(ipoint+i)= i+1; perml(0); }