| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【Acwing蓝桥杯笔记】1.1.2用递归实现指数型枚举 -> 正文阅读 |
|
[数据结构与算法]【Acwing蓝桥杯笔记】1.1.2用递归实现指数型枚举 |
1.1.2用递归实现指数型枚举
2^0~2^12: 1 2 4 6 8 16 32 64 128 256 512 1024 2048 2^20大概为10^6(一百万);2^16为65536;2^15为32768; 2^63大致为10^18
【注】:#include<bits/stdc++.h>包含了目前c++所包含的所有头文件
首先要判断边界,之后从前往后遍历每一位判断是否有被选。 之后是一个分支的过程,在某个分支做完以后还要进行回溯。 如何将方案记录下来:开辟一个二维数组进行记录。 代码如下: #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; ? const int N=16; /*定义数据范围*/ ? int n; int st[N];//记录每个位置目前的状态,0为未考虑,1为选,2为不选。 ? void dfs(int u)/*u表示当前在做第几位*/ { ? if(u>n)/*n-1为枚举的最后一位*/ ? { ? ? ? for(int i=1;i<=n;i++)//从前往后进行遍历判断。 ? ? ? ? ? if(st[i]==1) printf("%d",i); ? ? ? printf("\n"); ? ? ? return; ? } ? st[u]=2; ? dfs(u+1);//第一个分支,不选 ? st[u]=0;//恢复现场 ? ? st[u]=1; ? dfs(u+1);//第二个分支,选 ? st[u]=0; ? } int main() { ? scanf("%d",&n); ? dfs(1);/*从0开始进行深度搜索*/ ? ? return 0; } ? 元宵节快乐!! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 17:31:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |