关闭

一个全排列另类算法

129人阅读 评论(0) 收藏 举报
#include "stdio.h"
#include 
"stdlib.h"
int main()
{
    
void pre(int*,int);
    
int a[9]={1,2,3,4,5,6,7,8,9};
    pre(a,
9);
    system(
"pause");
    
return 0;
}

void pre(int a[],int n)
{
     
int t,i,k,j,e;
     
for(e=n,i=1;e;i*=e,e--);//n!
     for(k=1;k<i;k++){
          
for(e=k,j=1;!(e%(j+1));e/=j,j++);
          
          
for(e=1;e*2<j;e++)
          
{t=a[e];a[e]=a[j-e];a[j-e]=t;}
              
          t
=a[j];a[j]=a[0];a[0]=t;
             
          
for(t=0;t<n;t++)
          printf(
"%d-",a[t]);
          printf(
"   %d ",k);
          }

}
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2464次
    • 积分:51
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档