c语言字典序全排列算法
(2012-02-07 22:41:21)
标签:
c语言字典序排序算法排列函数库it |
分类: 算法 |
c语言字典序排序算法全排列:
没有用到函数库,直接运算输出:
#include <stdio.h>
int A[9];
int count;
inline void a(int n)
{
int i;
for(i=0;i<n;i++)
printf("%d",
A[i]);
printf("
");
count++;
}
inline void b(int i,int j)
int
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
void c(int k,int m)
{
int
i,j;
for(i=k,j=m;j>i;i++,j--)b(i,j);
}
int d(const int n)
{
if(1==n){printf("1\n");count++;return 1;}
int
i,j;
while(1){
a(n);
for(i=n-2;i>=0;i--){
if(A[i]<A[i+1])break;
if(0==i)return 1;
}
for(j=n-1;j>i;j--){
if(A[i]<A[j])break;
}
b(i,j);
c(i+1,n-1);
}
}
int main()
{
int
i,n;
while(1){
count=0;
printf("请输入n");
cin>>n;
if(n>Max ||
n<1){printf("error重新输入n\n");break;}
for(i=0;i<n;i++)A[i]=i+1;
d(n);
printf("的全排列的个数:%d\n", count);
}
return
0;
}
没有用到函数库,直接运算输出:
#include <stdio.h>
int A[9];
int count;
inline void a(int n)
{
}
inline void b(int i,int j)
}
void c(int k,int m)
{
}
int d(const int n)
{
}
int main()
{
}