1082. 数字游戏(数位dp)[通俗易懂]

1082. 数字游戏(数位dp)[通俗易懂]科协里最近很流行数字游戏。某人命名了一种不降数,这种数字必须满足从左到右各位数字呈非下降关系,如 123,446。现在大家决定玩一个游戏,指定一个整数闭区间 [a,b],问这个区间内有多少个不降数。输入格式输入包含多组测试数据。每组数据占一行,包含两个整数 a 和 b。输出格式每行给出一组测试数据的答案,即 [a,b] 之间有多少不降数。数据范围1≤a≤b≤231−1输入样例:1 91 19输出样例:918#include<bits/stdc++.h>usin

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

科协里最近很流行数字游戏。

某人命名了一种不降数,这种数字必须满足从左到右各位数字呈非下降关系,如 123,446。

现在大家决定玩一个游戏,指定一个整数闭区间 [a,b],问这个区间内有多少个不降数。

输入格式
输入包含多组测试数据。

每组数据占一行,包含两个整数 a 和 b。

输出格式
每行给出一组测试数据的答案,即 [a,b] 之间有多少不降数。

数据范围
1≤a≤b≤231−1

输入样例:
1 9
1 19
输出样例:
9
18
#include<bits/stdc++.h>
using namespace std;
const int N = 11;
int f[N][10];
void init(){ 
   
    for(int j = 0;j < 10;j ++)f[1][j] = 1;
    for(int i = 2;i < N;i ++){ 
   
        for(int j = 0;j < 10;j ++){ 
   
            for(int k = 9;k >= j;k --){ 
   
                f[i][j] += f[i - 1][k];
            }
        }
    }
}
int dp(int a){ 
   
    if(!a)return 1;
    vector<int>nums;
    while(a)nums.push_back(a % 10),a /= 10;
    int res = 0;
    int last = 0;
    for(int i = nums.size() - 1;i >= 0;i --){ 
   
        int x = nums[i];
        if(last > x)break;
        for(int j = last;j < x;j ++){ 
   
            res += f[i + 1][j];
        }
        
        last = x;
        if(!i)res ++;
    }
    return res;
}
int main(){ 
   
    init();
    int l,r;
    while(cin>>l>>r){ 
   
        cout<<(dp(r) - dp(l - 1))<<endl;
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168583.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • Hadoop简介_hadoop百度百科

    Hadoop简介_hadoop百度百科Hadoop的架构在其核心,Hadoop主要有两个层次,即:加工/计算层(MapReduce)存储层(Hadoop分布式文件系统)除了上面提到的两个核心组件,Hadoop的框架还包括以下两个模块:Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具HadoopYARN:这是作业调度和集群资源管理的框架HadoopStreaming是一个实用程…

    2022年10月17日
  • scrollIntoView()的用法[通俗易懂]

    scrollIntoView()的用法[通俗易懂]STARTscrollIntoView是一个与页面(容器)滚动相关的API(官方解释),该API只有boolean类型的参数能得到良好的支持(firefox36+都支持),所以在这里只讨论参数Boolean类型的情况。EXPLAIN调用方法为element.scrollIntoView()参数默认为true。参数为true时调用该函数,页面(或容器)发生滚动,使elem…

  • 《Android应用开发揭秘》连载2

    《Android应用开发揭秘》连载2《Android应用开发揭秘》  书名:Android应用开发揭秘作者:杨丰盛出版社:机械工业出版社ISBN:9787111291954出版日期:2010年3月(1版2次)开本:16页码:515版次:1-2定价:69元豆瓣网讨论地址:http://www.douban.com/subject/4200822/China-pub预订地址:http://www.china-pub.

  • NAND FLASH_Flash下载

    NAND FLASH_Flash下载作者:德州仪器现场技术支持工程师孟海燕概要:本文介绍了DM368NANDFlash启动的原理,并且以DM368 IPNC参考设计软件为例,介绍软件是如何配合硬件实现启动的。关键字:NANDFlash启动,RBL,UBL           芯片上电后是如何启动实现应用功能的?这是许多工程师在看到处理器运行的时候,通常都会问的一个问题。下面我们就以德州仪器的多媒体处理芯

  • docker端口映射失败解决方法

    docker端口映射失败解决方法docker端口映射失败解决方法

    2022年10月18日
  • python多行注释快捷键用不了_jupyter多行注释快捷键

    python多行注释快捷键用不了_jupyter多行注释快捷键在编写Python程代码时,有时需要将部分代码注释掉,而如果我们一行一行的进行注释,显然是非常麻烦,不够方便。那么我们想要把多行代码程序快速注释掉,有没有什么快捷键可以实现多行注释吗?《Python快乐编程》千锋教育告诉你具体方法。当然是有的,并且有三种方式实现。一、我们可以通过快捷键:Ctr+/来实现。注意:我们在操作此快捷键前需要首先选中准备要注释的代码!单行和多行的注释是一样的…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号