动态规划:不含相同数字的数字个数

0人阅读 评论(0) 收藏 举报
分类:

    给定一个常数n,求满足0<=x<10^n,且不包含相同数字的x的个数。例如给定n = 2,则 0<=x<100,且x不能为以下数字:11,22,33... 99,因此x的个数为91。

    分析:当n=0时,只有一个值0

             当n=1时,除0外,x可以是1,2..9中的任意一个,个数为9。

             当n=2时,除了一位的数字,两位的数字可以如下方式组成:第一位从1..9中选一个(最高位不能为0),第二位从剩下的9个数字中选一个。因此,两位数的个数有9*9。

             当n=3时,除了一位和两位的数字,三位的数字可以以如下方式组成:第一位从1...9中选一个,第二位从剩下的9个中选一个,第三位从剩下的8位中选一个。因此,三位数的个数为 9 * 9 * 8

            。。。

             当n=k时,k位的数字个数为9*9*8*7...

    public int countNumbersWithUniqueDigits(int n) {
        int[] array = new int[]{9,9,8,7,6,5,4,3,2,1};
        int total = 0; 
        int carry = 1;
        for (int i = 0; i <= n; i++) {
            total += carry; //位数分别为0、1、2...n的数字个数相加
            if (i < array.length) {
                carry *= array[i];
            } else { //如果大于10,将不存在数字不同个的数字
                break;
            }
        }
        return total;
    }
}

    

查看评论

数字成像系统

数字成像系统暨Image signal processor原理培训,涵盖成像系统基础5讲:1. 数字成像系统介绍2. CMOS image sensor基础3. 镜头光学基础4. 颜色科学基础5. ISP 信号处理基础,以及ISP各模块:6.黑电平与线性化7.Green Imbalance8:9.坏点消除等21讲,3A技术以及图像质量评价与调校6讲
  • 2017年10月14日 07:20

动态规划:数字组合

描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式。如: n=5,5个数分别为1,2,3,4,5,t=5; 那么可能的组合有5=1+4和5=2+3和5=5三种组合方式。 输入 ...
  • July_xunle
  • July_xunle
  • 2017-04-20 19:06:38
  • 731

HDU 3555 Bomb(1-n含有“49”的数字个数)

题目链接: HDU 3555 Bomb 题意: 求1到n中含有“49”序列的数字的个数。491,149都是含有“49”序列但是“419”不是的。 数据范围:n\leq 2^{63} -1 分...
  • Ramay7
  • Ramay7
  • 2016-08-29 18:08:39
  • 428

01:与指定数字相同的数的个数

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 输出一个整数序列中与指定数字相同的数的个数。 输入输入包含三行: 第一行为N,表示整数序列...
  • mayuan2017
  • mayuan2017
  • 2017-09-10 13:32:06
  • 1179

12:与指定数字相同的数的个数

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 输出一个整数序列中与指定数字相同的数的个数。 输入输入包含2行: 第1行为N和m,表示整数...
  • mayuan2017
  • mayuan2017
  • 2017-09-05 09:48:05
  • 805

动态规划--数字组合(背包方案数)

题目大概: 输入一个数字t,  输入n个数子,用这n个数有多少种组合成数字t的方案(每个数字只能用一次)。 思路: 读完题后,感觉这个题是背包的方案数问题。并且这个题是一个物品只能用一次的背包,即01...
  • a1046765624
  • a1046765624
  • 2017-04-05 18:55:16
  • 771

与指定数字相同的数的个数

总时间限制: 1000ms 内存限制: 65536kB 描述 输出一个整数序列中与指定数字相同的数的个数。 输入输入包含三行: 第一行为N,表示整数序列的长度(N 第二...
  • s0nail
  • s0nail
  • 2017-12-13 07:52:28
  • 81

C语言基础知识之(四):C语言中涉及的数字问题

数字运用详解 一、求某个数字的倍数,求某个位(个位、十位…)上是数字几,以数字6来举例。 1、求6的倍数: 更改a的值为126,如下 公式: 求数字n的倍数,即任何数 % n == 0;没有余数...
  • leleyuan1130
  • leleyuan1130
  • 2015-08-23 10:22:41
  • 374

C语言 与指定数字相同的数的个数(一维数组)

题目描述 输出一个整数序列中与指定数字相同的数的个数。 输入 输入包含n+2行: 第一行为n,表示整数序列的长度(n...
  • qq_40464403
  • qq_40464403
  • 2017-11-27 09:17:06
  • 301

动态规划解决数字塔-数字三角形问题

给定一个由N行数字组成的数字三角形,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大,以及路径。...
  • johnWcheung
  • johnWcheung
  • 2017-06-01 14:04:27
  • 385
    个人资料
    持之以恒
    等级:
    访问量: 1324
    积分: 833
    排名: 6万+
    文章存档