标题:[求助]同学出了道题,一点思路都没有
只看楼主
shower
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-4-29
 问题点数:0 回复次数:12 
[求助]同学出了道题,一点思路都没有

题目描述:
小明很讨厌爬楼梯。每次回家的时候,小明都要爬过那长长的(至少对刚刚6岁的小明来说)n阶楼梯(1 < n <= 500),回到温暖的家。经过长时间的总结,小明发现一步上ki阶楼梯(0 < i <= s, 0 < ki <= 30)的时候,会比较省力气,这样的ki一共有s(1 <= s <= 10)种。小明当然想省点力气好回家做作业。小明很想知道自己要从一楼回到家一共有多少种省力的爬法。
输入:
第1行:两个整数n s
第2行:s个整数k1 k2 … ks

输出:
第1行:一个整数m,省力的上楼回家的方法数。(保证m < 2^31)
样例输入:
5 2
2 3

样例输出:
2

样例解释:
每次上2阶或每次上3阶会比较省力。要上5阶的楼梯,有2种上法:先上2阶,再上3阶和先上3阶,再上2阶。其他的方法都不能准确地上到第5层台阶(比如上3次2阶,虽然能上到第6阶,但超过了5阶),所以不是一个解。


搜索更多相关主题的帖子: 思路 同学 
2006-05-25 00:12
eqd
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-25
得分:0 

有没有高人阿。
既要组合又要排列阿。
确实比较难。

2006-05-25 16:16
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
那如果输入是
5,3
1,2,3
输出是多少种呢?
是说将全部的ki都要用,还是说随便用不用只要达到目的地?

[此贴子已经被作者于2006-5-25 16:53:00编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-25 16:22
eqd
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-25
得分:0 
s不可能是2
s应该是3了
因为s等于ki的个数。
我理解可以有不用的。要不就简单了阿。
2006-05-25 16:25
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

为什么ki可以是30?小孩可以一步上30?神也不行啊~!


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-25 16:55
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
用穷举吧
就是一个一个试
关键是最后一步,I++(0~I)要是走多了
就算了说明前几个步法够了
然后让它后退一下(也就是还剩够两步的台阶)
然后再一个一个试
然后再后退
至到最后一个
用FOR循环

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-25 19:51
shower
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-4-29
得分:0 

晕,不是吧,每人会做?


2006-05-25 20:59
eqd
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-25
得分:0 

#include<iostream>
using namespace std;
int main()
{
int n,s,j,i,sta[10],ans[510];
while(cin>>n>>s)
{
for(i=0;i<s;++i)
cin>>sta[i];
memset(ans,0,sizeof(ans));
ans[0]=1;
for(i=1;i<=n;++i)
{
for(j=0;j<s;j++)
{
if(i>=sta[j] && ans[i-sta[j]]>0)
ans[i]+=ans[i-sta[j]];
}
}
cout<<ans[n]<<endl;

}
}

2006-05-26 08:58
eqd
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-25
得分:0 

我这个上面的算法还有一个小问题,
不能定义成int否则有可能越界,要定义成unsigned long 型的。

2006-05-26 10:03
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
你想过你输入的数字可能有重复的没?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-26 11:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-66924-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.104935 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved