1. 程式人生 > 其它 >浙大版《資料結構(第2版)》題目集習題2.8 輸出全排列 (20分)

浙大版《資料結構(第2版)》題目集習題2.8 輸出全排列 (20分)

技術標籤:浙大版《資料結構(第2版)》題目集

#include<bits/stdc++.h>
using namespace std;
void swap(int a[],int i,int j) 
{
    int k,r;
    r=a[j]; 
    for(k = j - 1;k>=i;k--) 
     a[k+1]=a[k];
    a[i]=r;
}
void swapback(int a[], int i,int j)
{
    int k,r;
    r=a[i];
    for(k=i+1;k<=j;k++)
      a[k-
1]=a[k]; a[j]=r; } void printA(int a[],int n) { for(int i=0;i<=n;i++) cout<<a[i]; cout<<'\n'; } void perm(int a[],int p,int q) { if(p==q) printA(a,q); else { int i; for(i=p;i<=q;i++) { swap(a,p,i); perm(a,p+1,q); swapback
(a,p,i); } } } int main() { int a[10],n; cin>>n; for(int i=0;i<n;i++) a[i]=i+1; perm(a,0,n-1); return 0; }

我太菜了嚶,上面的這個思路是我目前能稍微理解點的,按照評論區的大神修改了下(在B站上看的講解)。
連結:https://www.bilibili.com/video/BV1dx411S7WR?t=854