dp 小白月賽 迷霧森林

2021-10-02 21:15:23 字數 1806 閱讀 4494

引言:迷霧森林

帕秋莉掌握了一種木屬性魔法

這種魔法可以生成一片森林(類似於迷陣),但一次實驗時,帕秋莉不小心將自己困入了森林

帕秋莉處於地圖的左下角,出口在地圖右上角,她只能夠向上或者向右行走

現在給你森林的地圖,保證可以到達出口,請問有多少種不同的方案

答案對2333取模

輸入描述:

第一行兩個整數m , n表示森林是m行n列

接下來m行,每行n個數,描述了地圖

0 - 空地

1 - 樹(無法通過)

輸出描述:

乙個整數表示答案

示例1輸入

複製3 3

0 1 0

0 0 0

0 0 0

輸出複製

3備註:

對於30%的資料,n,m≤100

對於100%的資料,n,m≤3,000

資料規模較大,請使用較快的輸入方式,以下為快速讀入模板

templateinline void read(t &res)

scanf("%d",&x) -> read(x)

cin>>x -> read(x)

(呼叫方式:read(要讀入的數))

1.貼出錯誤**(超時):

#include

using namespace std;

template

inline

void

read

(t &res)

const

int maxn=

3005

;int a[maxn]

[maxn]

,book[maxn]

[maxn]

;int n,m,sum=0;

int dir[2]

[2]=

;void

dfs(

int x,

int y)

for(

int i=

0;i<

2;i++

) book[x]

[y]=0;

return;}

intmain()

} book[m][1

]=1;

dfs(m,1)

;printf

("%d\n"

,sum)

;return0;

}

2.正確解法dp:到每個點的方案數等於到它下方的點方案數與到它左邊點的方案數之和。

方程:dp[i][j]=dp[i+1][j]+dp[i][j-1]

#include

using namespace std;

template

inline

void

read

(t &res)

const

int maxn=

3005

;int a[maxn]

[maxn]

,f[maxn]

[maxn]

;int n,m,sum=0;

intmain()

}//起點到起點只有一條路

f[m][1

]=1;

//從下到上

for(

int i=m;i>=

1;i--)}

//最終答案就是到終點的方案數

printf

("%d\n"

,f[1

][n]);

return0;

}

木 迷霧森林 dp

第二天叫醒我的不是鬧鐘,是夢想!題目描述帕秋莉掌握了一種木屬性魔法 這種魔法可以生成一片森林 類似於迷陣 但一次實驗時,帕秋莉不小心將自己困入了森林 帕秋莉處於地圖的左下角,出口在地圖右上角,她只能夠向上或者向右行走 現在給你森林的地圖,保證可以到達出口,請問有多少種不同的方案 答案對2333取模 ...

牛客 木 迷霧森林 簡單dp

題目 木 迷霧森林 description 帕秋莉掌握了一種木屬性魔法。這種魔法可以生成一片森林 類似於迷陣 但一次實驗時,帕秋莉不小心將自己困入了森林。帕秋莉處於地圖的左下角,出口在地圖右上角,她只能夠向上或者向右行走。現在給你森林的地圖,保證可以到達出口,請問有多少種不同的方案。答案對2333取...

小白月賽 9

本場新生賽和今晚的小白月賽 本次比賽還是暴力了自己很大的問題,量和思維量都明顯不夠,只會暴力和找規律,遇到稍微思維量大一點的 題就沒辦法。優點是,比賽完後立馬補題,效果最好。a 簽到 1 include2 include3 include 4 include5 define ll long long...