[HDU 2563]统计问题[递推]
来源:互联网 发布:淘宝如何用图片搜同款 编辑:程序博客网 时间:2024/04/29 14:21
题目链接:[HDU 2563]统计问题[递推]
题意分析:
走过的地面马上就会坍陷无法再走,初始时,有一个方向无法行走,这里设为下方。问,走n步,一共有多少种走法?
解题思路:
如果上一步是向上,那么这步就可以走上,左,右;如果上一步是向左或者向右,那么这一步就可以向上或者向着上一步相同的方向。总共就这两种情况。
我们设向上走为z[i],左右走为h[i],总共走法为f[i]。
由于不过是上面哪两种情况,都可以向上走,所以有z[i] = f[i - 1];
如果上一步向上走,那么这一步横着走就可以往左右两个方向之一走;如果上一步是横着走的,那么这一步横着走只能沿着原有方向走了。
所以有:h[i] = 2 * z[i - 1] + h[i - 1];
最终:f[i] = z[i] + h[i];
个人感受:
之前画了个图找规律,死活WA,原来少考虑了好多东西。比如行走的方向会对后继状态影响。这题递推感觉很赞。
具体代码如下:
#include<algorithm>#include<cctype>#include<cmath>#include<cstdio>#include<cstring>#include<iomanip>#include<iostream>#include<map>#include<queue>#include<set>#include<sstream>#include<stack>#include<string>using namespace std;const int INF = 0x7f7f7f7f;const int MAXN = 111;int f[MAXN], h[MAXN], z[MAXN];int main(){ int c, n; cin >> c; f[1] = 3; h[1] = 2; z[1] = 1; for (int i = 2; i <= 22; ++i) { z[i] = f[i - 1]; h[i] = 2 * z[i - 1] + h[i - 1]; f[i] = z[i] + h[i]; } while (c --) { cin >> n; cout << f[n] << '\n'; } return 0;}
0 0
- HDU 2563 统计问题 递推
- HDU 2563 统计问题【递推】
- HDU-2563 统计问题 递推
- HDU 2563 统计问题(递推)
- hdu 2563 -统计问题 【递推关系】
- HDU 2563 统计问题 (递推)
- hdu 2563 统计问题(递推)
- [HDU 2563]统计问题[递推]
- HDU 2563 统计问题【简单递推】
- hdu 2563 -统计问题 【递推关系】
- hdu 2563 统计问题(递推)
- hdu 统计问题 (递推)
- HDU 2563 统计问题(简单递推/模拟)
- 【HDU】2563 - 统计问题(递推 & 思维)
- HDU 2563 统计问题 (递推 思维)
- 统计问题(递推)
- HDOJ 2563 统计问题(递推)
- hdu 2563 统计问题 递推 (2 *-1,1 * -2)
- android 侧滑学习2
- C#源代码—姓名 请输入老师的编号、姓名、职称和部门
- 在linux下编译安装python3.5.1问题解决
- 【POJ】1287 - Networking(最小生成树(克鲁斯塔尔),水)
- 禁止访问apache下项目目录
- [HDU 2563]统计问题[递推]
- 如何在Xcode7.2中添加空模板
- Eclipse与Android Studio快捷键对比
- CentOS 6.5 64位下安装httpsqs
- 关于求解一个链表中第k大元素的想法
- Linux相关问题
- 使用CocoaPods被卡住:Updating local specs repositories
- 根据字符串计算UILabel的宽,高
- No result defined for action action and result input 解决办法——struts2 文件上传