打印1到最大的n位数

Silvaco Atlas入门指南——从零开始掌握半导体器件仿真 本文为Silvaco Atlas半导体器件仿真软件的入门指南,详细介绍了从零开始掌握该工具的核心流程。内容涵盖Atlas的基本概念、仿真流程、核心文件(输入、结构、输出文件)、交互式与批处理两种操作模式,并逐步演示了如何从定义网格、划分区域、设置电极到进行掺杂、选择物理模型并求解,最终获取和分析器件特性的完整步骤。旨在帮助微电子相关专业人员和工程师快速上手这一强大的“数字实验室”,提升半导体器件设计与研发效率。 阅读详情

【题目】
输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的三位数999。
【分析】
思路1:循环打印,但是遇到大数问题,就不好解决了。
思路2:对大数问题,考虑用字符串储存十进制数,就不会考虑溢出的问题,用字符串模拟数字的加法,再把字符串表达的数字打印出来。
思路3:更简洁的办法是利用全排列递归方法,n位所有十进制数其实就是n个从0到9的全排列
【测试代码】
思路2:

#include<stdio.h>
#include<string.h>
#define false 0
#define true 1

int increment(char* number)
{
    int isoverflow = false;
    int ntakeover = 0;
    int nlength = strlen(number);

    for(int i =nlength - 1; i>=0; i--)
    {
        int nsum = number[i] - '0' + ntakeover;
        if(i == nlength -1)
            nsum++;

        if(nsum >=10)
        {
            if(i == 0)
                isoverflow = true;
            else
            {
                nsum -= 10;
                ntakeover = 1;
                number[i] = '0' + nsum;
            }
        }
        else
        {
            number[i] = '0' +nsum;
            break;
        }
    }
    return isoverflow;
}

void printnumber(char* number)
{
    int isbeginning0 = true;
    int nlength = strlen(number);

    for(int i = 0 ; i< nlength ; ++i)
    {
        if(isbeginning0 && number[i] != '0')
            isbeginning0 = false;
        if(!isbeginning0)
            printf("%c",number[i]);
    }
    printf("\t");
}

void Print_1N_Digits(int n)
{
    if(n<=0)
        return ;
    char *number = new char[n+1];
    memset(number, '0', n);
    number[n] = '\0';

    while(!increment(number))
        printnumber(number);

    delete []number;
}

void main()
{
    Print_1N_Digits(0);
    printf("\n");
    Print_1N_Digits(-1);
    printf("\n");
    Print_1N_Digits(1);
    printf("\n");
}

思路2:

#include<stdio.h>
#include<string.h>
#define false 0
#define true 1

void printnumber(char* number)
{
    int isbeginning0 = true;
    int nlength = strlen(number);

    for(int i = 0 ; i< nlength ; ++i)
    {
        if(isbeginning0 && number[i] != '0')
            isbeginning0 = false;
        if(!isbeginning0)
            printf("%c",number[i]);
    }
    printf("\t");
}

void Print_1N_Digits_recursively(char *number, int length, int index)
{
    if(index == length -1)
    {
        printnumber(number);
        return ;
    }

    for(int i = 0 ;i <10 ; ++i)
    {
        number[index + 1] = i +'0';
        Print_1N_Digits_recursively(number, length, index+1);
    }
}



void Print_1N_Digits(int n)
{
    if(n<=0)
        return ;
    char *number = new char[n+1];
    number[n] = '\0';

    for(int i = 0 ; i< 10 ; ++i)
    {
        number[0] = i +'0';
        Print_1N_Digits_recursively(number, n, 0);
    }

    delete []number;
}

void main()
{

    Print_1N_Digits(2);
    printf("\n");
}
基于STM32的智能婴儿床设计(蓝牙通信+摄像头监控)_315 本项目设计并实现了一款基于STM32微控制器的智能婴儿床系统,通过多种传感器和智能控制模块为家长提供更便捷和高效的婴儿照护解决方案。系统包括婴儿哭泣检测、湿度监测、空气质量检测、温度监控等多项功能,并通过蓝牙与手机APP进行数据传输和远程控制。婴儿床内置摇摇床和安抚音乐播放功能,能够在婴儿哭泣时自动启动摇摇床并播放安抚音乐。此外,系统还支持摄像头远程监控,让家长实时查看婴儿的状态。整个系统采用STM32F103RCT6作为核心控制单元,结合声音传感器、湿度传感器、MQ135空气质量传感器。 阅读详情

相关推荐

基于STM32的PID恒温恒湿控制系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6核心控制器,完整实现了基于双路PID算法的恒温恒湿闭环控制系统,覆盖高精度温湿度采集、双模式控制、参数在线配置、异常安全保护、掉电记忆等全功能,全程采用无跳步保姆式教学,从硬件选型、接线、CubeMX配置、代码开发、调试排坑全流程拆解,跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 346

打印从1到最大的n位数

剑指offer 面试题17 打印从1到最大的n位数 题目: 输入数字,按顺序打印出1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。 思路: 因为n可能会很大,所以不能直接求出最大值,然后for一遍。有两种方法可以解决:一、字符串模拟加法;二、递归 字符串模拟加法要注意的是到最大值需要是停下来,可以采用一个boolean变量。因为函数里的参数是数组,会改变数组里的值所...

ChildYH的博客 302

运维与软件实施课表

运维与软件实施课表 课程 章节编号 章节 课程地址 软件及操作系统基础 ch01 软件及操作系统基础01 实施、运维工程师基本技能:https://blog.youkuaiyun.com/qq_28189423/article/details/82700539 老毛桃制作winPE镜像:https://blog.youkuaiyun.com/qq_2818942...

Mr.O~的博客 1万+

打印从1到最大的n位数(大数处理)

打印从1到最大的n位数 题目: 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。 对于我们来说,我们可以直接想到的做法就是先求出最大的n位数,然后用一个循环从1打印就可以了。于是如下代码: ...

weixin_42078660的博客 941

【实战技巧】matplotlib中文标签显示问题的3种高效解决方案

本文详细介绍了解决matplotlib中文标签显示问题的3种高效方法,包括修改字体设置、临时指定字体和修改后端配置。针对不同操作系统和环境提供了实用技巧,帮助开发者快速解决中文显示为方框的常见问题,提升数据可视化效果。

weixin_30855099的博客 170

内存优化--LOGBACK导致内存告警

一.故事背景 由于开辟新市场需要,开发了新的项部署在海外平台,其中最消耗内存的功能是消费kafka消息(最开始预计一天有1千万的量),部署完之后运行一段时间发现出现内存告警问题。 二.分析问题 出现内存告警,(新项目是低配置机器 2C4G * 2台)第一个念头是去查看堆空间设置的情况,看到jvm启动命令中堆空间都是直接指定大小,说明问题不是出在堆空间 -Xmx3g -Xms3g 先不管这些,去查看总的内存使用情况,发现总的内存空间使用将近有92% = 3.68G,那么这多出来使用的0.6

qq_33199919的博客 6052

牛客题解 | 打印从1到最大的n位数

牛客题库题解

wc529065的博客 399

基于Hadoop的NBA篮球球员大数据分析与可视化系统大数据分析系统python的项目(源码+lw+部署文档+讲解等)

本系统以 Hadoop 为基础,致力于对 NBA 篮球球员的海量数据进行深入分析与可视化呈现。它能够收集来自多个数据源的丰富数据,包括球员比赛统计数据、身体素质数据、技术特点数据等。利用 Hadoop 的分布式存储和计算能力,对这些大规模数据进行高效处理。通过数据分析算法,挖掘球员的潜在价值和特点,如球员的得分能力趋势、篮板球效率变化、不同位置球员的技术差异等。同时,借助先进的可视化技术,将分析结果以直观的图表、图形等形式展示出来。教练和球队管理层可以通过可视化界面清晰地了解球员的综合表现和发展态势,从而制

QQ3359892174的博客 1314

【剑指offer】打印1到最大的n位数

剑指offer第12题,九度OJ测试通过。 题目描述: 给定一个数字N,打印从1到最大的N位数。 输入: 每个输入文件仅包含一组测试样例。 对于每个测试案例,输入一个数字N(1<=N<=5)。 输出: 对应每个测试案例,依次打印从1到最大的N位数。

兰亭风雨的专栏 5641

【ISAR成像定标方法(1)—转台目标的RD成像算法MATLAB仿真】

ISAR成像定标方法的研究具有重要意义,但是与之相关的学习资料以及仿真对于小白来说很难找或者很杂乱,本人作为小白之一在研究过程中苦不堪言,现在自己所要研究的定标内容已经完成,以后还学不学雷达也不一定,因为后面的路更难,现在打算把一些相关推导和仿真结果列出来,以供小白交流学习使用,希望能有点帮助。(PS:由于公式和符号的原因,采用图片形式说明)

此木旧年的博客 6417

浅谈天线 - - - GNSS/BT/4G/2.4G

全球定位导航系统,最成熟的就是美利坚,我大中华,俄罗斯,还有就是欧洲的一个(太次不谈)所以我们在项目调试的时候,小尺寸的陶瓷天线上一般兼容2个频段,体积大一点的可以兼容三个频段,采用组合的形式 GPS+BD GPS+GLONASS GLONASS+BD 或者是单频段的定位天线陶瓷PATC陶瓷片:陶瓷片面积越大,介电常数越大,其共振频率越高,接收效果越高,这就是为什么都推荐使用大一点的陶瓷天线的原因银层:陶瓷天线表面的银层可以影响天线的共振频率,理想的GNSS陶瓷片频点准确落在1575.42MH

BLACKHOLE6的博客 1万+

【剑指offer】面试题17:打印从 1 到最大的 n 位数

题目:输入数字n,按顺序打印出从1最大的的n位数十进制数。比如输入3,则打印出1,2,3一直到最大的3位数即999。  1、跳进面试官的陷进 这个题目看起来很简单。我们看到这个问题后,最容易想到的办法是求出最大的n位数,然后用一个循环从1开始逐个打印。于是我们很容易写出下面的代码: public class Print1ToMaxOfNDigits { // 方法一:没有考虑...

Java学习 1715

YOLOv11改进,YOLOv11添加DCNv4可变性卷积(windows系统成功编译),二次创新C3k2结构,全网最详细教程

引入了可变形卷积 v4 (DCNv4),这是一种为广泛视觉应用设计的高效且有效的操作算子。DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以最小化冗余操作,从而加速计算。这些改进使得DCNv4相比DCNv3显著加快了收敛速度,并且处理速度大幅提升,前向传播速度超过三倍。DCNv4在多个任务中表现出色,包括图像分类、实例和语义分割,特别是在图像生成方面表现突出。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2665

【剑指java版】打印从1到最大的n位数

文章来源: 个人博客 翔仔年轻有力量:打印从1到最大的n位数 题目描述   输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。 int n; 要求输出所有n位数 思路方法 数字n的范围不确定,若n较大,数值型的数据类型都无法完全输出。 借助字符串表示数字,而字符串的长度则为n。 如何使用字符串逐个输出?每一位数由’0’-'9’组成,则可以使用递归实现数字的全排列。 递归的形式,则是借助for循环。例如当n=3时,从第一位

Passion_Zz的博客 328

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

打印从1到最大的n位数(Golang)《剑指offer》

题目描述 题目:输入数字n,按顺序打印从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的3位数999。 func Print1ToMaxOfDigits(n int) { if n <= 0 { return } number := make([]int, n) for i := 0; i < 10; i++ { number[0] = i pr...

象牙塔下的渣渣 668

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

剑指 Offer 17. 打印从1到最大的n位数

剑指 Offer 17. 打印从1到最大的n位数

luoyepiaoxue2014的博客 525

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

打印从 1 到最大的 n 位数

题目描述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。 解题思路 由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储。 使用回溯法得到所有的数。 public void print1ToMaxOfNDigits(int n) { if (n <...

一路向北 168

校招算法笔面试 | 打印从1到最大的n位数

牛客题库题解

wc529065的博客 662
上一篇: 数值的整数次方
下一篇: 调整数组顺序使奇数位于偶数前面
心明在线
博客等级 码龄15年 14粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值