当前位置: 代码迷 >> C语言 >> 一道编程题,无从下手...
  详细解决方案

一道编程题,无从下手...

热度:335   发布时间:2007-08-12 11:43:09.0
一道编程题,无从下手...
一直一个数N,它能够表示为小于它的至少两个大于等于1的数的和,这些数是按升序排列的,如:
3可以表示为:3=1+2
5可以表示为:5=1+4
5=2+3
6可以表示为:6=1+2+3
6=1+5
6=2+4
所表示的升序中的每两个数是不能相等的,
编程解决:
给一个数N,编程给出N按上述方法表示,有多少种不同的升序排列?
搜索更多相关的解决方案: 相等  排列  无从下手  

----------------解决方案--------------------------------------------------------
数字拆分:
有三种方法:
1.数学解析法(用公式)
2.DFS 深度优先搜索
3.DP 动态规划

----------------解决方案--------------------------------------------------------
1?什么公式?

----------------解决方案--------------------------------------------------------
典型DP
----------------解决方案--------------------------------------------------------
以下是引用ConZhang在2007-8-12 12:05:20的发言:
1?什么公式?

组合相加


----------------解决方案--------------------------------------------------------
什么意思啊 没听懂 说的详细点 孔明同学 我想学哈子 谢..
----------------解决方案--------------------------------------------------------

例如
N=5
那么求
P(5,1)/1!+P(5,2)/2!+P(5,3)/3!+P(5,4)/4!+P(5,5)/5!
好象就是这个,我还没有学过组合数学(学历问题...),所以写的不确定是否完全正确,不过我记的是这样


----------------解决方案--------------------------------------------------------
历遍.
----------------解决方案--------------------------------------------------------

呵呵 谢谢拉 我数学系的 可惜我连组合是什么都忘了
惭愧嘿...


----------------解决方案--------------------------------------------------------
以下是引用谁与争疯在2007-8-12 17:21:48的发言:
历遍.

也就是DFS了,如果数据规模较大,肯定超时,所以还是用DP吧,如果楼主有兴趣,可以看看NOIP2001复赛提高组的第二题的标程或解题报告


----------------解决方案--------------------------------------------------------