一道題而已 opj 9271

2021-10-21 12:11:58 字數 802 閱讀 6160

描述

從乙個無限大的矩陣的中心點出發,一步只能向右走、向上走或向左走。恰好走n且不經過已走的點共有多少種走法?

輸入乙個數字,代表n,n<=1000

輸出輸出有多少方案

樣例輸入

2樣例輸出

7這道題是個動規題,但是與以往不同的是這道題是個正著推的題,我們定義乙個二維陣列a,a[1]表示向左走的步數,a[2]表示向右走的步數,a[3]表示向上走的步數,後面的這個是用來標記方向的,左邊的是用來記錄步數的,具體怎麼走呢,如果我們有i步,我們向左走了一步,那麼我們接下來還能從新的起點向左走i-1步或者向上走i-1 步,就得到了狀態轉移方程:a[i][1] = a[i - 1][1] + a[i - 1][3],向上和向右同理。

#include

#include

using

namespace std;

int a[

100001][

100001]=

;int n;

int tot =0;

intmain()

printf

("%d"

,a[n][4

]);return0;

}

這道題可以模擬一下過河卒或者斐波那契數列等正常遞推,正常的遞推都是這乙個狀態是由前面的狀態推過來,但是這道題是這個狀態是由後面的狀態推過來的。可能是因為這道題沒有乙個明確的邊界,導致起點賦不出來,單純通過模擬走法的遞推沒有邊界。qaq這理解也不一定對,但是這道題給我提供了乙個思路,二維陣列不一定非得是存矩陣的,還可以用左右兩個(行和列)記錄兩種截然不同的東西。

一道演算法題

兩個燒杯,乙個放糖乙個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...

一道演算法題

1.上午主要做了對翻譯任務的劃分,下午把 翻譯完畢。2.明天要講的演算法題 對乙個集合,求出其連續元素組成的子集中,和最大的子集 我對這道題的理解是 1 若集合中最小值大於0,意味著所有的都大於0,則最大的子集和,為所有值加起來 2 若集合中最大值小於0,意味著所有的都小於0,則最大的子集和,為集合...

一道演算法題

include using namespace std const int size 5 int max sub array const int a,int n,int m int max matrix const int a size int row,int col,int subsize int...