复习了DFS模板和一些列题
#include<bits/stdc++.h>
using namespace std;
int n, m;//n:有几个数 m:要几个
bool used[ ];//是否用过
int ans[ ];//答案
void dfs(int u){
if (出局判断){//到头就走 u==n时
输出答案for循环,逐个输出ans[i]
return ;//退出
}
for (int i = 开始的地方; i <= n; i++)//从上一个数开始依次增加,枚举每一种情况
if (used[i] == 0) {//判断是否用过
ans[u]=i;
used[]=1加入结果 设为用过
dfs(u + 1);//下一个数字
used[]=0回溯:回到没用过
}
return ;//退出
}
int main(){
输入 初始化
dfs(1);//开始搜索,从0或1开始
return 0;
}
一定要回溯!!!
有个数学规律题,刚开始只有一个1,要结果为n个1,每次操作可以复制粘贴前面有的,规律为log2(n-1)+1次操作