专题三1016
来源:互联网 发布:ztree导出json 编辑:程序博客网 时间:2024/06/07 02:40
题目大意:
假定有一张无限大的二维平面图,然后选一个点作为起点,然后每次只能移动一个格,只能向左、向右和向前而不能向后走,程序输入一个正整数n表示要走的步数,编程输出走n步共有几种走法,注意:每种走法中每个格只能走一次。
解题思路:
刚开始其实并没有什么思路,然后自己画了一张二维的平面图来测试前几个实例,我算了算n=3的时候是17步,然后n=4的时候是41步,接下来我就开始寻找其中的规律。当n=1时,ans=3=1+1+1,n=2的时候ans=2+2+3,n=3的时候ans=5+5+7,n=4的时候ans=12+12+17,我把每一次的答案都分成三部分,是因为这三部分分别代表了向左、右、前走的方法数,向左和向右的步数是相等的,然后向前走的走法等于n-1时候的总的走法,我就在试探找出其中的规律,我发现ans[n]=ans[n-1]*2+ans[n-2],之后我就定义了一个长度为21的数组ans[21],然后定义ans[1]和ans[2],根据上述公式计算出ans[3]到ans[20]的值存到数组里面,根据输入的步数,将其作为下标,输出数组的值即为答案。
感想:
这题关键在于找到这其中的规律,即上面的那个公式,找到那个公式,一切就都迎刃而解了。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int ans[21];
int c;
cin >> c;
ans[1] = 3;
ans[2] = 7;
for (int i = 3; i < 21; i++)
ans[i] = ans[i - 1] * 2 + ans[i - 2];
while (c--)
{
int n;
cin >> n;
cout << ans[n] << endl;
}
system("pause");
return 0;
}
- 专题三1016
- 1016-P专题三
- 专题三1016
- 2016sdau课程练习专题三 1016
- 3G专题三
- LDAP专题(三)
- IPV6专题(三)
- 专题三1006
- 专题三1001
- 专题三 第一题
- 专题三 第二题
- 专题三 第三题
- 专题三 第四题
- 专题三1012
- 专题三1013
- 1006-F专题三
- 1001-A专题三
- 1010-J专题三
- 关系映射文件***.hbm.xml详解
- XML Schema
- java之强、软、弱、虚四大引用
- [五年困惑] 从数学到计算机 从莱布尼兹到冯诺依曼 从数理逻辑到算法分析
- UEFI+GPT引导实践篇 (UEFI引导安装64位Win7/Win8)
- 专题三1016
- hibernate关联映射与集合映射详解
- ng-repeat 中动态绑定ng-click 点击事件处理函数&动态改变ng-class
- 安卓内存泄露分析整理
- 机器学习常见算法总结(面试用)
- c语言实例之矩阵转置
- Hibernate基本配置
- Hibernate继承映射
- Java面向对象概述