当前位置: 首页 > ops >正文

DFS入门刷题c++

目录

821. 跳台阶 - AcWing题库

​92. 递归实现指数型枚举 - AcWing题库 

​P1706 全排列问题 - 洛谷 (luogu.com.cn)

P1157 组合的输出 - 洛谷 (luogu.com.cn)

​P1036 [NOIP 2002 普及组] 选数 - 洛谷 (luogu.com.cn)

P2089 烤鸡 - 洛谷 (luogu.com.cn)

P1088 [NOIP 2004 普及组] 火星人 - 洛谷 (luogu.com.cn)


 821. 跳台阶 - AcWing题库

#include<iostream>
using namespace std;
int t(int n) {if (n <= 2)return n;if (n >= 3)return t(n - 1) + t(n - 2);
}
int main() {int n; cin >> n;cout << t(n);return 0;
}

92. 递归实现指数型枚举 - AcWing题库 

#include<iostream>
using namespace std;
int n;
int s[20];//0表示未考虑;1表示选;2表示不选
void dfs(int x) {if (x > n) {for (int i = 1; i <= n; i++) {if (s[i] == 1)cout << i << " ";}cout << endl;return;}for (int i = 1; i <= 2; i++) {s[x] = i;dfs(x + 1);}
}
int main() {cin >> n;dfs(1);return 0;
}

 P1706 全排列问题 - 洛谷 (luogu.com.cn)

#include<iostream>
using namespace std;
int n;
int s[20];
bool vis[20];
void dfs(int x) {if (x > n) {for (int i = 1; i <= n; i++) {printf("%5d", s[i]);}cout << endl;return;}for (int i = 1; i <= n; i++) {if (!vis[i]) {vis[i] = true;s[x] = i;dfs(x + 1);vis[i] = false;s[x] = 0;}}
}
int main() {cin >> n;dfs(1);return 0;
}

 P1157 组合的输出 - 洛谷 (luogu.com.cn)

#include<iostream>
using namespace std;
int n, r;
int a[25];
void dfs(int x, int start) {if (x > r) {for (int i = 1; i <= r; i++) {printf("%3d", a[i]);}cout << endl;return;}for (int i = start; i <= n; i++) {a[x] = i;dfs(x + 1, i + 1);a[x] = 0;}
}
int main() {cin >> n >> r;dfs(1,1);return 0;
}

 P1036 [NOIP 2002 普及组] 选数 - 洛谷 (luogu.com.cn)

#include<iostream>
using namespace std;
int n, k;
int a[25]; int s[25];
int res;
bool jud(int t) {if (t < 2)return false;for (int i = 2; i * i <= t; i++) {if (t % i == 0)return false;}return true;
}
void dfs(int x, int start) {if (x > k) {int sum = 0;for (int i = 1; i <= k; i++) {sum += s[i];}if (jud(sum))res++;return;}for (int i = start; i <= n; i++) {s[x] = a[i];dfs(x + 1, i + 1);s[x] = 0;}
}
int main() {cin >> n >> k;for (int i = 1; i <= n; i++)cin >> a[i];dfs(1, 1);cout << res;return 0;
}

P2089 烤鸡 - 洛谷 (luogu.com.cn)

#include<iostream>
using namespace std;
int n;
int res;
int a[60000][11];
int tem[11];
void dfs(int x, int sum) {if (sum > n)return;if (x > 10) {if (sum == n) {res++;for (int i = 1; i <= 10; i++) {a[res][i] = tem[i];}}return;}for (int i = 1; i <= 3; i++) {tem[x] = i;dfs(x + 1, sum + i);}
}
int main() {cin >> n;dfs(1, 0);cout << res << endl;for (int i = 1; i <= res; i++) {for (int j = 1; j <= 10; j++) {cout << a[i][j] << " ";}cout << endl;}return 0;
}

 P1088 [NOIP 2004 普及组] 火星人 - 洛谷 (luogu.com.cn)

#include<iostream>
using namespace std;
int n, m;
int res;
const int N = 10010;
int a[N]; bool vis[N]; int mars[N];
void dfs(int x) {if (x > n) {res++;if (res == m + 1) {for (int i = 1; i <= n; i++) {cout << a[i] << " ";}exit(0);//剪枝,输出之后强制退出}}for (int i = 1; i <= n; i++) {if (!res) {i = mars[x];}if (!vis[i]) {vis[i] = true;a[x] = i;dfs(x + 1);vis[i] = false;a[x] = 0;}}
}
int main() {cin >> n >> m;for (int i = 1; i <= n; i++)cin >> mars[i];dfs(1);return 0;
}

http://www.xdnf.cn/news/9258.html

相关文章:

  • 工业级UART数据转发芯片EU104 低功耗多串口芯片 1主4从多串口转发
  • 26、请求处理-【源码分析】-Rest映射及源码解析
  • 机器学习知识体系:从“找规律”到“做决策”的全过程解析
  • 走进黑盒:SQL 是如何在数据库中执行的?
  • Linux基础命令掌握-cut命令
  • 0527漏洞原理:SQL注入笔记
  • CSRF和XSS攻击防御指南
  • 院校机试刷题第十三天:代码随想录算法训练营第七天
  • 调不好分布式锁?HarmonyOS + Redis 分布式锁失效排查全路径
  • Oracle20200714GI_PSU补丁流程及问题收集
  • 一种比较精简的协议
  • python学习day30
  • SSTable(Sorted String Table)结构与用途详解
  • 数据类型(基本类型)day2
  • C-内存函数,动态内存
  • Qt布局连续添加控件
  • Web3怎么本地测试连接以太坊?
  • 封装文档核心知识点总结(通俗版)
  • 利用 MkDocs 和 GitHub 部署个人博客网页
  • LINUX安装运行jeelowcode后端项目(命令行)
  • 【运维自动化-标准运维】如何实现在不同步骤间传递参数
  • 人该怎样活着呢?54
  • 随机模拟专题:第一课
  • 5G网络切片技术:开启网络服务定制化新时代
  • SpringMVC注解、@Controller注解和@RestController注解的区别、@RequestMapper、@PathVariable
  • 制作一款打飞机游戏59:子弹生成
  • DeepSeek 赋能智能安防:从算法革新到场景落地的全解析
  • 4月报 | SeaTunnel支持TDengine的多表Sink功能
  • 机器学习算法-- K 近邻算法(KNN)
  • Linux 资源限制(进程级,用户级,系统级)