作者LPH66 ((short)(-15074))
看板Prob_Solve
标题Re: [请益] 配对问题
时间Thu Dec 17 01:55:18 2009
※ 引述《wchunga (阿铨看这边)》之铭言:
: 假设有 N个颜色的盒子,每一个盒子里面有数颗与盒子相同颜色的球
: 且球上有号码。盒子中的球,数目都不一定。 请问要如何列出所有的可能?
: ex: 以2个盒子 为例,假设 蓝盒里面有蓝球3颗, 红盒中有红球2颗
: 则 跑1 次loop,可得到...
: 蓝1红1
: 蓝1红2
: 蓝2红1
: 蓝2红2
: 蓝3红1
: 蓝3红2 共6种.
: 如果以这种方式演算,有N个盒子时,我需要跑 N-1次 loop. 而且每次loop
: 所花的时间取决於盒子球的数量多少。
: 请问有没有更好的演算法? 还是有人知道该用什麽关键字去查相关的资讯?
: 谢谢回答。
给你另一个例子
一年内的时间是由日、小时、分、秒组成的
一年有365日 一日有24小时 一小时有60分 一分有60秒
类比成四个盒子 分别有 365 个白球 24 个蓝球 60 个红球 60 个黄球
各自都从0开始编号
那麽各取一个出来就能组成一个时间
而要跑过全部所有时间有一个很简单的做法是
for(t=0; t<31536000; t++)
{
d=...;
h=...;
m=...;
s=...;
/* 这里 h:m:s 就是一个时间了 */
/* 细节我不写, 自己想想看 */
}
也就是这个回圈解决了上面这四个盒子的问题
你可以思考一下这个例子和你的问题之间的类比 就知道你的问题要怎麽解决了
--
'Oh, Harry, dont't you
see?' Hermione breathed. 'If she could have done
one thing to make
absolutely sure that every single person in this school
will read your interview, it was
banning it!'
---'Harry Potter and the order of the phoenix', P513
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.28.92
1F:→ bleed1979:如果单位数量不多的话,几个单位几个for回圈 12/17 03:30