| |
|
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/12 22:50:59- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |