穿梭时间的画面的钟 从反方向 开始移动|

tmjyh09

园龄:3年2个月粉丝:1关注:3

P1057 [NOIP2008 普及组] 传球游戏 题解

题目传送门

分析

这道题可以用 dp 来做。设 fi,j 为第 j 次传球传到第 i 个人的方案数。一个球可以从左边传过来(i1),也可以从右边传过来(i+1)。那么

fi,j={1,i=1&j=0,fn,j1+f2,j1i=1,f1,j1+fn1,j1i=n,fi1,j1+fi+1,j1,otherwise.

需要注意边界的处理。

代码

#include <bits/stdc++.h>
using namespace std;
int n, m;
int f[35][35];
int main() {
cin >> n >> m;
f[1][0] = 1;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (j == 1)f[j][i] += f[n][i - 1] + f[2][i - 1];
else if (j == n)f[j][i] += f[1][i - 1] + f[n - 1][i - 1];
else f[j][i] += f[j - 1][i - 1] + f[j + 1][i - 1];
}
}
cout << f[1][m];
return 0;
}

本文作者:tmjyh09

本文链接:https://www.cnblogs.com/tmjyh09/p/15761049.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   tmjyh09  阅读(272)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起