实验1- 结构体、共用体和枚举:传送门
实验2 - 链表: 传送门
实验3 - 递推: 传送门
实验4 - 递归: 传送门
实验5 - 贪心: 传送门
实验6 - 动态规划:传送门
实验四递归全排列问题代码更新:
#include <iostream>
#include<bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
const int N = 1e5 + 10;
const int M = 111;
using namespace std;
int a[11];
///右移元素
void move_r(int l,int r){
if(l>=r) return ;
int t=a[r];
for(int i=r;i>l;i--) a[i]=a[i-1];
a[l]=t;
}
///左移元素
void move_l(int l,int r){
if(l>=r) return ;
int t=a[l];
for(int i=l;i<r;i++) a[i]=a[i+1];
a[r]=t;
}
///递归全排列
void perm(int l,int r){
if(l==r){
for(int i=1;i<=r;i++){
if(i==r) cout<<a[i]<<endl;
else cout<<a[i]<<",";
}
}
else{
for(int i=l;i<=r;i++){
swap(a[l],a[i]);
move_r(l+1,i);
perm(l+1,r);
move_l(l+1,i);
swap(a[l],a[i]);
}
}
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
perm(1,n);
return 0;
}