1196踩方格(C++)
給個(gè)贊吧,給跪了

題目題目
/*
1196:踩方格
【題目描述】
有一個(gè)方格矩陣,矩陣邊界在無(wú)窮遠(yuǎn)處。我們做如下假設(shè):
a、每走一步時(shí),只能從當(dāng)前方格移動(dòng)一格,走到某個(gè)相鄰的方格上;
b、走過(guò)的格子立即塌陷無(wú)法再走第二次;
c、只能向北、東、西三個(gè)方向走;
請(qǐng)問(wèn):如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認(rèn)為是不同的方案。
【輸入】
允許在方格上行走的步數(shù)n(n≤20)。
【輸出】
計(jì)算出的方案數(shù)量。
【輸入樣例】
2
【輸出樣例】
7
要做題首先我們先要知道這道題的題目是什么意思
?總結(jié)題目就是說(shuō)在一個(gè)無(wú)限范圍內(nèi)的方格里面有一個(gè)初始點(diǎn),要求這個(gè)點(diǎn)就是只可以走上,左,右,然后呢走過(guò)的格子不可以再走了,最后要求你根據(jù)已知的步數(shù)算出可能性。
思路:
這道題沒(méi)有什么思路,就是一個(gè)舉例子的題目
先看一下輸入樣例吧,輸入2
然后根據(jù)題目要求的不可以走下,所以我們可以隨機(jī)得到一個(gè)表格

其中小黑點(diǎn)(小黑子)代表了初始點(diǎn),綠色代表著第一次到達(dá)的地方,藍(lán)色代表第二次,紅色第三次。
當(dāng)輸入的次數(shù)為1時(shí),小黑子只可以走上左右,即3種情況

當(dāng)輸入為2時(shí)則為以下情況,7種可能,(注意,重復(fù)的證明走到哪里的有那么多可能)

輸入為3就是

次數(shù)為3時(shí)注意小黑子左上和右上的藍(lán)色因?yàn)樾『谧由厦娴木G色沒(méi)有走過(guò),所以可以往那里走,所以還有2種可能不可以省略哦。
通過(guò)上面的測(cè)試可以看出次數(shù)為1,2,3時(shí),可能數(shù)分別為3,7,13。
然后。。。。。。找規(guī)律。。。。。。
額。。。。。
很難找啊
最后還是發(fā)現(xiàn)了是3*2+7=13
所以規(guī)律就是i=(i-2)*2+(i-1)
然后就可以做了
真的很麻煩啊
*/
#include<iostream>?
#include<cstring>
using namespace std;
int a[30];
int main(){
? ? int n,i;
? ? cin>>n;
? ? a[1]=3; //初始化數(shù)組第一個(gè)?
? ? a[2]=7;?//初始化數(shù)組第二個(gè)
? ? for(i=3;i<=n;i++)?//for循環(huán)循環(huán)個(gè)數(shù)
? ? ? ? a[i]=2*a[i-1]+a[i-2];??//公式,當(dāng)前的等于后面第一個(gè)*2加后面第二個(gè)
? ? cout<<a[n]<<endl;?//輸出答案
? ? return 0;
}
目前up也是沒(méi)有找到更好的方法了,如果有,那么歡迎大家在下面評(píng)論區(qū)討論回答,up會(huì)根據(jù)回答來(lái)更改文稿的,謝謝大家。最后請(qǐng)求大家點(diǎn)個(gè)贊吧!