高效的排列生成算法

原创 2007年10月05日 21:07:00

 

 本算法与上一篇的组合生成算法是一体的,也是在维普上看到的。我用C++实现如下:

#include <cstdlib>
#include 
<iostream>
#include 
<iterator>

using namespace std;
      
void  Permutation( int n )...{
    
int *A=new int[n+1], *B=new int[n+1], i=0, j;
    
for( j=1; j<=n; ++j )
         A[j]
=j, B[j]=0
    
while( i!=n+1  )...{
        copy(A
+1,A+n+1,ostream_iterator<int>(cout," "));  
        cout
<<endl;
        
for( i=2; i<=&& B[i]>=i-1 ; ++i );
        
++B[i];
        
if( i&1 )   swap( A[i], A[1] );
        
else        swap( A[i], A[B[i]] );
        
for( j=1; j<=i-1++j )
            B[j]
=0;
    }

    delete []A;    delete []B;
}

                    
int main(int argc, char *argv[])...
    Permutation( 
4 );
    system(
"PAUSE");
    
return EXIT_SUCCESS;
}

排列组合的高效算法

1。最近一直在考虑从m个数里面取n个数的算法。最容易理解的就是递归,但是其效率,实在不能使用。一直找寻中,今日得果 2。算法来源与互联网 组合算法      本程序的思路是开一个数组,其...

1到N的整数中,随机选出M个并升序排列的较高效算法

/** * 从1到N的整数中,选出M个,按小到大排序存入数组 * @author rorom * @param n * @param m * @return */ ...
  • rorom
  • rorom
  • 2012年04月25日 13:08
  • 369

【两项业界最佳】普林斯顿新算法自动生成高性能神经网络,同时超高效压缩

摘要: 普林斯顿大学研究人员提出了一种会在训练过程中连接、生长、移除神经元的神经网络。这种神经网络使用梯度和神经元强弱来生长(grow)和修剪(prune),从而实现权重和结构的同时训练。此算法可同时...

QT编写的数独游戏及一个准确高效生成算法

QT编写的数独游戏,数独的生成算法、难度选择
  • zj0395
  • zj0395
  • 2017年05月26日 19:35
  • 1359

【密码学】生成8位26个字母和数字的全排列(密码字典,密钥)c++代码(非递归高效直接)

生成8位26个字母和数字的全排列(密钥)代码(非递归高效直接) 用C语言或C++,生成一个8位的26个字母和数字的全排列的原代码,例如从:00000000到ZZZZZZZZ。 说明:生成的这个字典会...

A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效(牛客网)

#include using namespace std; /* 1)先使用快速排序,使得两个数组有序; 2)然后利用二分查找的方法,在数组B中查找; 3)其中,注意在数组B中,使用二分查找的起点,是...

一种高效的图像匹配算法.pdf

  • 2015年02月14日 11:58
  • 232KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:高效的排列生成算法
举报原因:
原因补充:

(最多只允许输入30个字)