由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个题目:数字组合
相关主题
关于排列组合的总结有重复元素的全排列,递归算法
关于排列组合的题目的算法生成一个有重复数的全排列,怎么做比较好
问个google面试题对自己DFS能力彻底的绝望了。
问一个题目[合集] 难倒了,一道组合题
问三道题排列组合害死人啊
问道题 正方体八顶点电面结果做错了怎么办?
像准备高考,准备 GRE 一样地准备算法有没有《排列组合》这种课本
算法:按照字典序求第k个排列数interviewstreet上求排列组合的题好像挺多的
相关话题的讨论汇总
话题: ni话题: 位数话题: 数字话题: n9话题: n0
进入JobHunting版参与讨论
1 (共1页)
i*****e
发帖数: 63
1
设有个N位数,其中有“0” N0个, "1" N1个,..."i" Ni个,..., "9" N9个
0<=Ni <= N 且 sum(Ni : i from 0 to 9) = N
请中,有多少个由这些数字组成的数在范围[a, b]中, B的位数可能大于N(此时可随意
添加0的个数)
比如
1022, 其中有1 1个, 0 1个,2 2个
如果a= 1000, b = 20000则 1202, 2012, 10220, 12020等都是备选
不知道说清楚没
p*****2
发帖数: 21240
2
最简单的解法就是brute force,如果b不大的话。
要不就把所有的排列得出来,后边再加0。
i*****e
发帖数: 63
3
要是b很大呢,似乎两种方法都太耗时了

【在 p*****2 的大作中提到】
: 最简单的解法就是brute force,如果b不大的话。
: 要不就把所有的排列得出来,后边再加0。

p*****2
发帖数: 21240
4

你这题是从哪里来的?a,b的范围多大?

【在 i*****e 的大作中提到】
: 要是b很大呢,似乎两种方法都太耗时了
i*****e
发帖数: 63
5
一朋友问的,觉得是到数学题,呵呵
应该可以用排列组合的理论来解,但是想不到好方法
1<= a <= b <= 2^64 or 2^128
p*****2
发帖数: 21240
6

数学题我不擅长,等着数学博士过来看看吧。

【在 i*****e 的大作中提到】
: 一朋友问的,觉得是到数学题,呵呵
: 应该可以用排列组合的理论来解,但是想不到好方法
: 1<= a <= b <= 2^64 or 2^128

a***o
发帖数: 1182
7
二爷求加俱乐部!

【在 p*****2 的大作中提到】
:
: 数学题我不擅长,等着数学博士过来看看吧。

C***U
发帖数: 2406
8
可以这样。找到和a最接近但是比a大的组合。 找到和b最接近但是比b小的组合
用nextpremutation来找出之间的数
找那两个数应该都用o(n)时间
加上nextpermutation们的时间

设有个N位数,其中有“0” N0个, "1" N1个,..."i" Ni个,..., "9" N9个0
★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

【在 i*****e 的大作中提到】
: 设有个N位数,其中有“0” N0个, "1" N1个,..."i" Ni个,..., "9" N9个
: 0<=Ni <= N 且 sum(Ni : i from 0 to 9) = N
: 请中,有多少个由这些数字组成的数在范围[a, b]中, B的位数可能大于N(此时可随意
: 添加0的个数)
: 比如
: 1022, 其中有1 1个, 0 1个,2 2个
: 如果a= 1000, b = 20000则 1202, 2012, 10220, 12020等都是备选
: 不知道说清楚没

i*****e
发帖数: 63
9
恩,应该可以试一试
之前用python试了一把,python的permutation函数不区分重复数字,candidates太多.
..
貌似stl的next_permutation可以

【在 C***U 的大作中提到】
: 可以这样。找到和a最接近但是比a大的组合。 找到和b最接近但是比b小的组合
: 用nextpremutation来找出之间的数
: 找那两个数应该都用o(n)时间
: 加上nextpermutation们的时间
:
: 设有个N位数,其中有“0” N0个, "1" N1个,..."i" Ni个,..., "9" N9个0
: ★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

g***s
发帖数: 3811
10
以前好像做过类似的,不过没有可以随便加0这个条件。
基本思路就是固定头几位,后面数字不影响的时候直接用排列公式来算。
例如 012355,[124001,315506]
10*全排除
12[03]*全排除
125* 全ok 直接计算035的全排列树目。
2* 全ok 直接计算01355的全排列树目。
30* 全ok 直接计算1255的全排列树目。
310 全ok
312 全ok
3150
。。。
复杂度是数字的长度.
这题0可以随便加,指的是加到最后吧。一样的思路可以解。

【在 i*****e 的大作中提到】
: 设有个N位数,其中有“0” N0个, "1" N1个,..."i" Ni个,..., "9" N9个
: 0<=Ni <= N 且 sum(Ni : i from 0 to 9) = N
: 请中,有多少个由这些数字组成的数在范围[a, b]中, B的位数可能大于N(此时可随意
: 添加0的个数)
: 比如
: 1022, 其中有1 1个, 0 1个,2 2个
: 如果a= 1000, b = 20000则 1202, 2012, 10220, 12020等都是备选
: 不知道说清楚没

1 (共1页)
进入JobHunting版参与讨论
相关主题
interviewstreet上求排列组合的题好像挺多的问三道题
再问几题排列组合看能不能把你绕晕问道题 正方体八顶点
问码工一个问题像准备高考,准备 GRE 一样地准备算法
这题有沒有P解?算法:按照字典序求第k个排列数
关于排列组合的总结有重复元素的全排列,递归算法
关于排列组合的题目的算法生成一个有重复数的全排列,怎么做比较好
问个google面试题对自己DFS能力彻底的绝望了。
问一个题目[合集] 难倒了,一道组合题
相关话题的讨论汇总
话题: ni话题: 位数话题: 数字话题: n9话题: n0