一道数据结构的问题(等待求解)

dfbb22222 2009-10-24 01:48:21
有三十个格,每次能向前跳一到三格,问正好跳完有多少种方法
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengjiankang 2009-10-24
  • 打赏
  • 举报
回复
递归:n个格子的走法有f(n)种
f(1) = 1,f(2) = 0,f(3) = 2.
f(n) = f(n - 1) + f(n - 3);
阿杰心路历程 2009-10-24
  • 打赏
  • 举报
回复

class Program
{
static void Main(string[] args)
{
int a = 10;
int b = 0;
int c = 0;
int count=1;
while(a!=0||b!=0)
{
if (b == 0)
{
a--;
b++;
c++;
}
else
{
b--;
c += 2;
}
count++;
Console.WriteLine(a+" "+b+" "+c);
}
Console.WriteLine(count);
Console.ReadLine();
}
}

没有考虑步数前后问题
阿杰心路历程 2009-10-24
  • 打赏
  • 举报
回复
可以用贪心算法
最少步数是 10 0 0 第二少 9 1 1 第三少 9 0 3
依次类推 直到最多部分0 0 30
lilgtoit 2009-10-24
  • 打赏
  • 举报
回复
明显就是30种方式
步长就是格子大小要跳个数

好幼稚...
plumstar 2009-10-24
  • 打赏
  • 举报
回复
思路:
跳到第n格的方法有: 第(n-1)格跳一格到第n格,第(n-2)格跳二格到第n格,第(n-3)格跳三格到第n格,
所以第n格的方法数 = 第(n-1)格的方法数 + 第(n-2)格的方法数 + 第(n-3)格的方法数,
a[0] = 1;
a[1] = 1; // 只有1格,一种方法
a[2] = 2; // 只有2格,二种方法
for (i = 3; i < n; ++i)
a[i] = a[i-1] + a[i-2] + a[i-3];
跳完三十格有a[30]种方法。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧