半数集问题-打印集合元素

分治算法——半数集问题 半数集问题 什么是半数集? 给定一个自然数n,在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半。 举个例子:若n=6,求6的半数集。 {6,16,26,126,36,136} 6半数集肯定包含他本身; 1不大于的一半 所以16; 2不大于6的一半,26;1又不大于2,所以126; 3不大于6的一半,36;1又不大于3,所以136; 解题思路 由图可知,12的半数集依赖于1至6的半数... 阅读详情

 1.

题目描述:
给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:
(1) n∈set(n);
(2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
(3) 按此规则进行处理,直到不能再添加自然数为止。
例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6个元素。注意,半数集是多重集。对于给定的自然数n,计算半数集set(n)及其中的元素个数。

2. 

输入
只有一行,给出正数n(0<n<1000)。
输出
给出半数集set(n)及其中的元素个数。
样例输入 Copy
6
样例输出 Copy
6
16
26
126
36
136
6

3.思路:   eg.当n=6时, 6本身在set集合中;

                   在n的左边加上不超过 n/2 的数,因此满足的数有:16      26       36

                   依次类推,26与36都还可以在左边加一个1,即:126,136

                   总之,set(6)={6,16,26,126,36,136},6个

4.代码实现: 

#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
int a[1e5+10];

int  set(int n,int i) {
	a[i]=n;
	for(int j=i;j>=1;j--) {  //遍历数组(从后往前)
		cout<<a[j];
	}
	cout<<endl;
	int ans=1;
	for(int k=1;k<=n/2;k++) { 
		ans+=set(k,i+1);
	}
	return ans;
}

int main(){
	int n;
	cin>>n;
	cout<<set(n,1);	
	return 0;
}
《算法分析与设计》笔记整理 (1)全排列问题 问题:打印出给定的n个字符的全排列。 思想:递归,将问题转化为前缀+n-1个字符的全排列 Notations: list[]:一定顺序的n个字符字符串 k:当前前缀设置位置k号 m:字符总数量 void Perm(list[],int k,int m) { if(k ==m) { for(int i=0;i<m;i++) cout<<list[i]<<' '; cout<<endl; } for(int i=k;i< 阅读详情

相关推荐

2.3半数集问题.mp4

对于计算机算法半数集问题是详细解决思路讲解

半数集问题

名次解释 给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: (1) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (2)按此规则进行处理,直到不能再添加自然数为止。 以自然数6为例,首先包括其本身{6},然后包括6与其约数构成的2位数集合{16,26,36},最后还有两个3位数集合{126,136}。 汇总之后得出6的半数集set(6)={6,16

ithaibo的专栏 587

算法设计与分析之半数集问题c++代码(递归)

给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集是多重集。 输入 对于给定的自然数n,计算半数集set(n)中的元素个数。 输出 程序运行结束时,将计算结果输出。输出只有1 行,给出半数集set(n)中的元素个数。

算法分析_半数集问题

问题描述: 给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: (1) n∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136},半数集set(6)中有6个元素。 输入:整数n(0<n<1000) 输出:半数集set(n)中的元素个数。 分析: 首先应该明确什么是半数集,半数集就是给定一个数,在这个数的左边添加新的数字(如6,左

qwqc262的博客 1843

半数集问题给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。

半数集问题 给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集是多重集。 编程任务: 对于给定的自然数n,编程计算半数集set(n)中的元素个数。 Input 输入数据由文件名只有1 行,给出整数n。(0<N<1000) Output 程序运行输出到只有1 行,给出半数集set(n)中的元素个数。 Sample Input 6 Sample Output 6

别再为多相机标定头疼了!用VisionMaster统一坐标系的保姆级教程

本文详细介绍了使用VisionMaster平台解决多相机视觉系统中坐标系统一问题的完整流程。从标定板选择到N点标定,再到实战演练,提供了从原理到落地的全方位指导,帮助工程师高效解决多相机定位引导中的坐标偏差问题。

weixin_38168322的博客 632

半数集问题(递归+记忆化搜索)

给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: (1) n ∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 以6为例子,6,6前面可以加1,2,3生成16,26,36,26前面可以加1生成126,同理36生成136.所以6的半数集元素个数为6分别是6,16,26,36,126,136 以12为例子,只加一个数字产生的元素有612,512,412,312,212,112。因为之后加的数

qq_51772871的博客 913

AI订单流异常检测:精准识别与闭环处置

本文系统阐述了订单流AI驱动的可视化与异常解释系统的构建策略。核心包括:1)多维度融合的异常检测技术,结合数据指纹、行为图谱和时序分析实现精准识别;2)分级分类与自动化处置机制,通过规则矩阵和风险熵值量化进行智能决策;3)基于SHAP/LIME的可解释性技术,提升决策透明度;4)千万级数据训练要求,确保模型达到87%以上的F1值。系统采用Flink+PAI实时计算架构,支持从异常检测到根因分析的完整闭环,为电商、金融等领域的订单风险管理提供智能化解决方案。

2401_83000568的博客 1360

半数集问题 (非递归&递归版本)

什么是半数集? 本文介绍了本数集的两种求法, 递归和非递归. 其中非递归的写法相对少见。使用了一个队列, 一个数组容器来进行代替

weixin_46388660的博客 1025

CorelDRAW 2019安装指南:从下载到激活的完整步骤

本文提供了一份详细的CorelDRAW 2019安装指南,涵盖从下载安装包、检查系统环境到完成激活的完整步骤。文章重点解析了安装过程中的关键选项设置,并分享了首次启动后的优化配置与常见问题解决方案,旨在帮助用户高效、顺利地完成这款经典矢量设计软件的安装与配置。

weixin_29213827的博客 834

CSP-J 入门级第一轮认证 2025 详细解析

2025年CSP-J入门级第一轮认证模拟赛提供10套免费试题,含选择题与解析。选择题涉及计算机科学基础,如32位无符号整数最大值计算(约42.9亿,选A)、C++位运算(255&254=254,选B)、递归函数分析(calc(5)=6,选B)、哈夫曼树构造(带权路径长度186,选B)等。其他题目涵盖图论(有向图边数等于入度/出度和,选B)、组合数学(120种选法,选C)、布尔逻辑(选项C不恒等)、模运算周期性(f[2025]=6,选D)、C++字符串特性(支持string+char,选B)及引用传参

lan_in的博客 2941

分治算法解决半数集问题

一、问题描述: 给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集是多重集。 对于给定的自然数n,计算半数集s...

CR7的博客 6703

C#调用Bartender打印标签,除了打印还能一键导出图片和PDF(附完整代码)

本文详细介绍了如何使用C#集成Bartender实现标签的多格式输出,包括打印、图片和PDF导出。通过完整的代码示例和实战技巧,帮助开发者解决分辨率适配、纸张尺寸控制等核心问题,提升工业自动化和物流管理中的标签处理效率。

weixin_31236101的博客 369

半数单集问题

【问题描述】 给定一个自然数 n,由 n 开始可以依次产生半数集 set(n)中的数如下。n∈set(n);在 n 的 左边加上一个自然数,但该自然数不能超过最近添加的数的一半;按此规则进行处理,直到 不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集 set(6)中有 6 个元素。 注意半数集不是多重集。集合中已经有的元素不再添加到集合中。 对于给定的自然数 n,编程计算半数集 set(n)中的元素个数。 #include <iostream> #

weixin_52554704的博客 400

【文献阅读笔记】之基于注意力机制的深度学习路面裂缝检测

中文,计算机辅助设计与图形学学报,第 32 卷 第 8 期,2020 年 8 月。 DOI: 10.3724/SP.J.1089.2020.18059 摘要: 为实现自动准确地检测路面裂缝, 提升路面裂缝检测效果, 提出了一种基于注意力机制的裂缝检测网络 (attention-based crack networks, ACNet). 该网络采用编码器-解码器网络构架, 编码器采用 ResNet34 为骨干网, 提取路面裂缝特征; 在编码器和解码器间加入基于注意力机制的特征模块(attention-b

qq_44785998的博客 7593

FAST-LIVO2 源码精读(一):系统总览——从 LIO 到 LIVO 的多传感器融合架构

本文是「FAST-LIVO2 激光-惯性-视觉里程计源码精读」专栏的开篇。全专栏共 18 篇,锚定香港大学 MaRS 实验室 2025 年 1 月开源的官方代码,逐模块剖析这套登上 T-RO’24 的多传感器融合系统。开篇先建立全局认知:FAST-LIVO2 所要解决的问题、整体框架的构成,以及源码主线的数据流动。

PX4-SLAM-PNC 594

C++知识总结1(递归算法、复合数据类型)

3.1递归算法 一、 1、把大型复杂的问题,层层分解得到规模小的小问题来求解 2、基本思想:层层分解 二、步骤 1、分析问题,寻找递归;找大规模和小规模之间的关系 2、找出停止条件 3、设计函数,确定参数 三、求1-100 递归:fn(n)=n+fn(n-1) 终止条件:f(1)=1 代码:int fn(int n){ if(n<=1) return 1; else return n+fn(...

奇蠢无比の二琦的博客 272

以 Joule 驱动的生成式开发:把需求文档直接变成可运行的 SAP 应用

摘要:SAP BTP的AI助手Joule正在改变开发方式,支持从自然语言描述自动生成数据模型、服务、UI及测试代码。在SAP Business Application Studio中,Joule能根据业务需求生成结构化代码,并提供代码补全、重构、解释等功能。开发者需注意避免上传敏感数据,并对AI生成的代码进行人工审核。Joule特别针对ABAP开发进行了优化,提供符合SAP规范的代码建议,帮助迁移遗留系统。此外,它还能快速生成CAP项目原型,但所有AI生成内容都需经过严格测试验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 342

acm周中学习总结

这周新开了搜索算法的学习,到目前为止,初步接触了一些搜索的题目和用法。 搜索是一种利用枚举和递归寻找目标的算法。核心是对路径的枚举和递归操作。搜索分为广度优先搜索(bfs)和深度优先搜索(dfs),广度优先搜索就是逐层枚举,逐层查找,这一层不枚举完不进行下一层。而深度优先搜索则是一条道走到黑,先到n-1节点的下一层节点的第一个,如果不是目标,则回溯,对于n-1节点在向下便利,就像一个固执的人,总是...

Nerdant 360

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【C++】阶段性学习总结(一)

递归算法、复合数据类型、类和对象

qq_44973528的博客 1628

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【算法分析与设计】半数集问题

给定一个自然数 n,由 n 开始可以依次产生半数集 set(n)中的数如下。(2) 在 n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;(3) 按此规则进行处理,直到不能再添加自然数为止。例如,set(6)={6,16,26,126,36,136}。半数集 set(6)中有 6 个元素。注意半数集是多重集。(0

Walker501的博客 835

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

半数集合和最长公共子串

半数集问题 问题描述: 给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,...

chuweiyun6378的博客 208

【算法设计与分析】分治算法-半数集问题C++

例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6个元素。注意,该半数集是多重集。(2)在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;对于给定的自然数n,计算半数集set(n)中的元素个数。【输出形式】只有1行,给出半数集set(n)中的元素个数。(3)按此规则进行处理,直到不能再添加自然数为止。【输入形式】只有1行,给出整数n(0

weixin_73165382的博客 515
上一篇: 算法训练- DP问题 - HDU-2602
下一篇: DFS-地下停车场
ଳxin
博客等级 码龄8年 83粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值