遍历数列有什么规律规律52143是怎么算的

遍历由1、2、3、4、5五个元素组成的任意排列(附上组合算法)
遍历由1、2、3、4、5五个元素组成的任意排列。
1,2,3,4,5
1,3,2,4,5
1,4,2,3,5
5,4,3,2,1
把所有可能的排列打印出来
不使用C++&STL的算法包,用C语言提供的工具实现
#include&iostream&
#include&stdio.h&
#include&vector&
typedef unsigned int uint32;
class Sequencer
&uint32 *pA
&~Sequencer()
&&delete[] pA
&bool generate(uint32 min,uint32 max)
&&length=max-min+1;
&&uint32 curr=
&&pArray=new
uint32[length];&&
&&for(uint32
akey=0;akey&akey++)
&&&pArray[akey]=
&&&curr++;
&void print()
&&for(uint32
akey=0;akey&akey++)
&&&cout&&pArray[akey]&&"
&void swapTwo(uint32 key_1st,uint32 key_2nd)
&&temp=pArray[key_1st];
&&pArray[key_1st]=pArray[key_2nd];
&&pArray[key_2nd]=
&void printAll(uint32 level_key)
&if(level_key==length)
&&&print();
&&&for(uint32
each_key=level_each_key&each_key++)
&&&&swapTwo(level_key,each_key);
//switch the curre
&&&&printAll(level_key+1);
&&&&swapTwo(each_key,level_key);//switch
&&&&&&&&&&&
int& main()
Sequencer MyS
MySeq.generate(1,5);
MySeq.printAll(0);
===========
def swapTwo(d,k1,k2):
& d[k1]=d[k2]
def permu(data,level,n):
& dlen=len(data);
& if(level==n):
print(data[0:n])
for i in range(level,dlen):
& swapTwo(data,level,i)
&& permu(data,level+1,n)
swapTwo(data,i,level)
&&return d
def permuFull(data):
&&& print("input
data:",data)
&&& for l in
range(1,len(data)+1):
permu(data,0,l)
permuFull(list("abcd"))
input data: ['a', 'b', 'c', 'd']
['a', 'b']
['a', 'c']
['a', 'd']
['b', 'a']
['b', 'c']
['b', 'd']
['c', 'b']
['c', 'a']
['c', 'd']
['d', 'b']
['d', 'c']
['d', 'a']
['a', 'b', 'c']
['a', 'b', 'd']
['a', 'c', 'b']
['a', 'c', 'd']
['a', 'd', 'c']
['a', 'd', 'b']
['b', 'a', 'c']
['b', 'a', 'd']
['b', 'c', 'a']
['b', 'c', 'd']
['b', 'd', 'c']
['b', 'd', 'a']
['c', 'b', 'a']
['c', 'b', 'd']
['c', 'a', 'b']
['c', 'a', 'd']
['c', 'd', 'a']
['c', 'd', 'b']
['d', 'b', 'c']
['d', 'b', 'a']
['d', 'c', 'b']
['d', 'c', 'a']
['d', 'a', 'c']
['d', 'a', 'b']
['a', 'b', 'c', 'd']
['a', 'b', 'd', 'c']
['a', 'c', 'b', 'd']
['a', 'c', 'd', 'b']
['a', 'd', 'c', 'b']
['a', 'd', 'b', 'c']
['b', 'a', 'c', 'd']
['b', 'a', 'd', 'c']
['b', 'c', 'a', 'd']
['b', 'c', 'd', 'a']
['b', 'd', 'c', 'a']
['b', 'd', 'a', 'c']
['c', 'b', 'a', 'd']
['c', 'b', 'd', 'a']
['c', 'a', 'b', 'd']
['c', 'a', 'd', 'b']
['c', 'd', 'a', 'b']
['c', 'd', 'b', 'a']
['d', 'b', 'c', 'a']
['d', 'b', 'a', 'c']
['d', 'c', 'b', 'a']
['d', 'c', 'a', 'b']
['d', 'a', 'c', 'b']
['d', 'a', 'b', 'c']
打印N个元素中取M个的全组合
#include &iostream&
#include &algorithm&
void printArray(int32_t a[], uint32_t len){
for(uint32_t i=0;i&i++) cout&&a[i]&&' ';
void combine(
int32_t a[],
uint32_t a_len, uint32_t a_pos,
int32_t b[], uint32_t b_len, uint32_t b_pos)
if(b_pos&=b_len) printArray(b,b_len);
else for(uint32_t ai=a_ ai&a_ ai++){
b[b_pos]=a[ai];
combine(a,a_len,ai+1,b,b_len,b_pos+1);
int main()
int32_t a[]= {1,2,3,4};
int32_t b[4];
uint32_t a_len=sizeof(a)/sizeof(int32_t);
for(uint32_t i=1;i&=a_i++){
cout &&a_len&&"选"&&i&&
combine(a,a_len,0,b,i,0);
============
Java 版全排列
public class Test{
&final static private void swapTwo(final Object a[], final int k1, final int k2){
&&Object t=a[k1]; a[k1]=a[k2]; a[k2]=t;
&final static public void permutation(final Object a[], final int level, final int n){&
&&if(level==n){&&
&&&for(int i=0;i&n;i++) System.out.print(a[i]+" ");&&&&&
&&&System.out.println();&
&&}else for(int i=i&a.i++){&&
&&&swapTwo(a, level, i);&&&
&&&permutation(a, level+1, n);&&
&&&swapTwo(a, i, level);&&&&
&public static& void main(String[] args) {
String[] a = { "A", "B", "C", "D", "E" };
for(int i=1;i&=a.i++)
permutation(a, 0, i);
Java全组合
public class Test{
&public static& void main(String[] args) {&
&&String[] a = { "A", "B", "C", "D", "E" };
&&for(int i=1;i&=a.i++){
&&&System.out.println(a.length+"选"+i);
&&&String[] res=new String[i];
&&&combine(a,0,res,0);
&final static public void combine(final Object a[], final int a_pos,final Object rs[], final int rs_pos)
&&if(rs_pos&=rs.length){&
&&&for(int i=0;i&rs.i++) System.out.print(rs[i]+" ");
&& &System.out.println();
&&}else for(int ap=a_ ap&a. ap++){
&&&rs[rs_pos]=a[ap]; combine(a,ap+1,rs,rs_pos+1);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 公务员考试中遍历规律 的文章

 

随机推荐