⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 全排列的经典算法2.cpp

📁 全排序
💻 CPP
字号:
#include <iostream.h> 
#define N 5 // C的动态数组比较麻烦,这里就回避了 

int a[N+1]; 
void exchange(int& x); 
void swap(int& a, int& b); 

void main() 
{ 
  int i; 
  int y=1; 
  int x; 
  for (i=1;i<=N;i++) 
    a=i; 
  do 
  { 
    cout<<y<<" ---> "; 
    for (i=1;i<=N;i++) 
      cout<<a; 
    cout<<endl; 
    x=0; 
    y++; 
    exchange(x); 
  }while (x!=0); 
  return 0; 
} 

void exchange(int& x) 
{ 
  int i; 
  int j; 
  for (i=1;i<=N-1;i++) 
    if (a<=a[i+1]) 
      x=i; 
  if (x!=0) 
  { 
    for (i=x;i<=N;i++) 
      if (a[x]<=a) 
        j=i; 
    swap(a[x],a[j]); 
    for (i=x+1;i<=N;i++) 
    { 
      if (i!=N+x+1-i) 
        swap(a,a[N+x+1-i]); 
      if ((i+1)*2>N+x+1) 
        break; 
    } 
  } 
} 

void swap (int& a, int& b) 
{ 
  a=a+b; 
  b=a-b; 
  a=a-b; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -