📄 perm1.cpp
字号:
#include<iostream.h>
#include<time.h>
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void print(int *a,int *s,int n)
{
for(int i=1;i<=n;i++)
cout<<a[s[i]]<<' ';
cout<<endl;
}
void perm(int *a,int n)
{
int *s=new int[n+2],tp=n;
for(int i=0;i<=n;i++)
s[i]=i;
s[i]=0;
while(true)
{
print(a,s,n);
while(s[tp]>s[tp+1])
tp--;
if(tp<1)
break;
for(i=tp+1;i<(n+tp+2)/2;i++)
swap(s[i],s[n+tp+1-i]);
for(i=tp+1;s[i]<s[tp];i++);
swap(s[i],s[tp]);
tp=n;
}
}
void main()
{
int n;
cin>>n;
int *a=new int[n+1];
for(int i=1;i<=n;i++)
a[i]=i;
cout<<"Permutation lists:"<<endl;
clock_t start=clock(),finish;
perm(a,n);
finish=clock();
double total=(double)(finish-start);
cout<<total<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -