PART 1
分治递归算法:大问题可分解成小问题,大小问题具有相似性,递归要有边界条件,然后再合并
递归常见问题:求斐波拉数列,手写全排列
#include <bits/stdc++.h>
using namespace std;
int a[4]={0,1,2,3};
void permutation(int a[],int k,int n){
if(k<n){
for(int i=k;i<=n;i++){
swap(a[i],a[k]);
permutation(a,k+1,n);
swap(a[i],a[k]);
}
}
else{
for(int i=1;i<=n;i++)
cout<<a[i]<<' ';
cout<<endl;
}
}
int main(){
permutation(a,1,3);
return 0;
}
复杂度递推式:当n=1,T(n)=O(1);当n>1,T(n)=kT(n/m)+f(n)
复杂度求解法:代换法,递归树法,主方法
代换法:猜测解的形式,通
分治与DP的关系(三月面经笔记)
最新推荐文章于 2022-03-30 14:23:27 发布