avatar
g*y
1
November 06
一日3题
第一题。给一个数组a[1]到a[n] : 例如 1,2,3,4,5,6
现在随机生成a的一个permutation: b[1]到b[n] (例如:3 1 5 2 4 6)
问, a和b数组在每一位上都不相同的概率是多少?假设a本身没有重复的数
我的解法:
主问题:F(n) = 给定长度为n的a数组,b数组有多少种取法
辅助问题:结果用f(n)表示。 b数组是{1….i-1,x,i+1…n}的一个排列,其中x!=i,满
足a,b在每一位上都不相同,有多少种b?例如,a = 1,2,3,4; b是{1,2,5,4}的一个排
列。换句话说,组成b的元素中,有且只有一个数不在a中。
这样定义了F(n),f(n)后,很显然有递推关系:
F(n) = (n-1) * f(n-1) //解释:第一位有n-1种选择,任意一种选择后,问题变为
一个 n-1规模的辅助问题
f(n) = F(n-1) + (n-1)*f(n-1) //情况一,在b数组的第i位置填入x,考虑剩下的n-
1个位置,即是一个n-1规模的主问题;情况二,i位置填入非x的数,考虑剩下的n-
avatar
S*u
3
尼玛,看来妖族的献祭都是给了三祖啊。显然三祖对丫馄饨不是很放心,三颗红心,两
手准备。
avatar
w*1
4
static int BitSetCount256[256] =
{
#define B2(n) n, n+1, n+1, n+2,
#define B4(n) B2(n), B2(n+1), B2(n+1), B2(n+2),
#define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2),B6(0), B6(1), B6(1), B6(2)
}
这个不是很明白。。。 定义完了, 直接用么?
avatar
c*s
5
一日三题,坚持了多久啊?
avatar
s*t
6
我也想知道。呵呵
我自己做topcoder做了一个礼拜,还都是300分的弱智题,结果卡在第22题了,后来就再
也没登录过。。。

【在 c*********s 的大作中提到】
: 一日三题,坚持了多久啊?
avatar
c*f
7
zan!
avatar
E*S
8
态度决定一切,习惯决定成败!
avatar
l*r
9
ding
avatar
g*e
10
第一题就按组合数学想好了,有一重复的case,有两个重复的case,。。。全部重复的
case,处理之。
第三题数1有点意思。这样写更容易理解些:P
int c=0;
while(i>0)
{
c+=(i&0x1)
i=i>>1;
}
return c;

【在 g*******y 的大作中提到】
: November 06
: 一日3题
: 第一题。给一个数组a[1]到a[n] : 例如 1,2,3,4,5,6
: 现在随机生成a的一个permutation: b[1]到b[n] (例如:3 1 5 2 4 6)
: 问, a和b数组在每一位上都不相同的概率是多少?假设a本身没有重复的数
: 我的解法:
: 主问题:F(n) = 给定长度为n的a数组,b数组有多少种取法
: 辅助问题:结果用f(n)表示。 b数组是{1….i-1,x,i+1…n}的一个排列,其中x!=i,满
: 足a,b在每一位上都不相同,有多少种b?例如,a = 1,2,3,4; b是{1,2,5,4}的一个排
: 列。换句话说,组成b的元素中,有且只有一个数不在a中。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。