?? 全排列的經(jīng)典算法2.cpp
字號:
#include <iostream.h>
#define N 5 // C的動態(tài)數(shù)組比較麻煩,這里就回避了
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 + -