最近在网上有很多的排列的程序,很多种方法,但都觉看不懂,所以自己写了一个自己能看懂的,思路很简单,就是俩俩交换,速度还行。
// test_67.cpp : Defines the entry point for the console application.
//
#include “stdafx.h”
#include<stdio.h>
#define N 20
int pailie(int newnum[]);
int swap(int *a,int *b);
int main()
{
int num[N],save[N],i=0,j=0,k=0;
printf(“请输入%d个数:”,N);
for(i=0;i<N;i++)
{
scanf(“%d”,&num[i]);
save[i]=num[i];
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i!=j)
{
swap(num+i,num+j);
}
pailie(num);
for(k=0;k<N;k++)
{
num[k]=save[k];
}
}
}
return 0;
}
int swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
return 0;
}
int pailie(int newnum[])
{
int i=0;
for (i=0;i<N;i++)
{
printf(“%d “,newnum[i]);
}
printf(“\n”);
return 0;
}
希望各高手指点!
>> 本文固定链接: http://www.vcgood.com/archives/3207
排列算法一向都是很复杂 不仔细看 是看不出来 只有 很模块 才可以清楚