dfs
2025-08-23 11:26:44
发布于:广东
兄弟们,我才学了半年就去打蓝桥杯去了。结果“不小心”进了国赛。
昨天学历深搜,我来总结一下。
1.格式
void dfs(int p){
if(p==n+1){
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return;
}
for(int i=1;i<=n;i++){
if(!vis[i]){
vis[i]=true;
//b[p]=a[i];
dfs(p+1);
vis[i]=false;
}
}
}
2.广搜:抓住那头牛
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 9;
int d[maxn];
int main() {
int n, k;
cin >> n >> k;
memset(d, -1, sizeof(d));
d[n] = 0;
queue<int> q;
q.push(n);
while (q.size()) {
int r = q.front();
q.pop();
if (r >= 1 && d[r - 1] == -1) {
d[r - 1] = d[r] + 1;
q.push(r - 1);
}
if (r < 1e5 && d[r + 1] == -1) {
d[r + 1] = d[r] + 1;
q.push(r + 1);
}
if (2 * r <= 1e5 && d[2 * r] == -1) {
d[2 * r] = d[r] + 1;
q.push(2 * r);
}
}
cout << d[k];
return 0;
}
这里空空如也
有帮助,赞一个