同志吗好!
今天不打广告了
挖掘机技术哪家强
中国山东赵兰香找蓝翔
不过还是洒家强!
广告结束!
今天给大家带来的题目是:C++ 1196:踩方格
下面是这篇文章的目录:
1.题目到底是啥?
2.史上最详细题解!
3.代码举例!
4.尾声!
题目到底是啥?
不告诉你
就怪了
1196:踩方格
【题目描述】
有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:
a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;
b、走过的格子立即塌陷无法再走第二次;
c、只能向北、东、西三个方向走;
请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。
【输入】
允许在方格上行走的步数n(n≤20)。
【输出】
计算出的方案数量。
【输入样例】
2
【输出样例】
7
题目链接http://ybt.ssoier.cn:8088/problem_show.php?pid=1196
史上最详细题解!
这道题难度:AAA
这道题主要难在怎么知道有几种方案?
突然想到,这是递推题啊,想不出来就找规律!
对喽!
列张表:
方格数 | 方案数 | 关系 |
1 | 3 | 无 |
2 | 7 | 无 |
3 | 17 | 7*2+3 |
4 | 41 | 17*2+7 |
5 | 99 | 41*2+17 |
那么,关系就很清楚了:a[i]=a[i-1]*2+a[i-2]
答案就来了:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
long long a[30]= {};//使用long long,与int_64大小差不多,大小为-2^63-1~2^63-1,由于这道题取值范围较大,所以用long long
a[1]=3;
a[2]=7;
for(int i=3; i<=n; i++)
a[i]=a[i-1]*2+a[i-2];//公式
cout<<a[n];
return 0;
}
代码举例!
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
long long a[30]= {};//使用long long,与int_64大小差不多,大小为-2^63-1~2^63-1,由于这道题取值范围较大,所以用long long
a[1]=3;
a[2]=7;
for(int i=3; i<=n; i++)
a[i]=a[i-1]*2+a[i-2];//公式
cout<<a[n];
return 0;
}