加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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;
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有