全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 经管百科 爱问频道
4531 13
2009-10-16
悬赏 10 个论坛币 未解决
有多少个十八位数(首位不能为0)满足条件:没有1个数字在该数中出现3次以上?这是一道编程题!大家有没有什么想法?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-10-16 09:28:45
这个论坛也研究编程问题?楼主早上6点半都起来发帖,先顶一个。。
不过这个题目初步思想可以把这个18位数视数组a【1】...a【18】用程序循环并计数得出结果。
还有这题貌似能用排列组合思想计数,假定最高位不为0然后后面排列组合,排除出现3次以上的情况,似乎计算不如写个循环程序运行的快,不过作为研究可以试一下。
恕我不能写出详细过程,我只是个业余者,距离我考计算机四级已经近8年了,毕业都快7年了,有点力不从心啊。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-10-16 09:39:24
2# zziliwgh 不是的,我在美国,只是晚上发帖罢了。这个问题编程的难度在于如果用brute force,运行速度会非常慢,所以一定要找一种提高速度的方法。我原来也想用排列组合的方法算,化归该问题成30个数{0,0,0,1,1,1,。。。,9,9,9}选18个放到18个格子中,第一格只能从非零的元素中选,这样形成的不同的数的个数有多少。结果越想越晕,因为这样重复的数次数很难计算。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-10-16 10:49:33
我觉得你这样化为30个数进行排列组合,你想想是不是程序的计算量突然增加了不少,这样对你的目的不合吧。我确实没考虑到你是在国外,呵呵,还以为你是在中国呢。

我又想了一下,计算量都很大,不实际动手不好判断哪个计算量更大。我的思路就是写18层嵌套循环,排除法穷举计数得出结果。好像这样以现在的计算能力恐怕不知多久才能运行结束。这种方法几乎不可取。接近于暴力那种,不知道新的程序思想是怎么搞定这个问题的。
如果分段的话不知道有没有合适的算法,考虑下矩阵能不能搞,我上班了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-10-16 11:21:39
很像初中数学竞赛的题 呵呵
出了暴力运算之外 你可以这样想:(a) no 0; (b) one 0;(c) two 0.
if (a), 那么这就是一个简单的排列组合。两组这个的(1,2,3,4,5,6,7,8,9)排列,你可以用数学技巧算也可以循环做
if (b), 那就再分9种情况,分别是 no 1, no 2, no 3,.....
if (c), etc.....
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-10-16 12:38:23
5# archwizard 你说的(a)的情况就没那么容易算了,其实应该是(1 to 9)*3中(即27个数中)选18个数排列还要不重复,怎么算?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群