計蒜課 蒜頭君走迷宮

2021-07-29 09:41:24 字數 1076 閱讀 8553

蒜頭君從乙個 n 行 m 列的迷宮的左上角走到右下角,蒜頭君每次只能向下或者向右走一步,蒜頭君想知道他有多少種走法。

輸入格式

輸入 2 個整數 n(1≤n≤3),m(2≤m≤10​^9​)。

輸出格式

輸出方案數。

樣例輸入1

2 3樣例輸出1

樣例輸入2

3 3樣例輸出2

在看到m的資料達到10^9的時候,可以發現用dfs做肯定超時,用陣列存資料肯定記憶體不夠,因此我們得想別的方法解決這個問題,此題我是用排列組合做的,我們可以發現無論怎麼走到終點,總步數是一致的,既向下走n-1步 ,向右走m-1步,一共走了n+m-2步,因此樣例1 輸入2 3的方案數為cn+m-2(n-1)也就是c3(1)=3,因為雖然是2 , 3個格仔,但是每個方向只需要走1 , 2步,總共為3

我又發現cm

n=n!

m!(n

−m)!

=n∗(

n−1)

...∗

(n−m

+1)m

! 所以可以簡化為如下**===>>>

#include 

using

namespace

std;

long

long factorial(int n)//求階乘

return sum;

}int main()

long

long total=x/factorial(n-1);

printf("%lld",total);

}

計蒜客習題 蒜頭君走迷宮

蒜頭君從乙個 n 行 m 列的迷宮的左上角走到右下角,蒜頭君每次只能向下或者向右走一步,蒜頭君想知道他有多少種走法。輸入格式 輸入兩個整數 n 2 n 10 5 m 2 m 10 5 輸出格式 由於方案數太多,輸出最後結果對 1000000007 取模的結果。樣例輸入 2 3 樣例輸出 3 incl...

蒜頭君面試 計蒜客

蒜頭君來蒜廠面試的時候,曾經遇到這樣乙個面試題 給定 n nn 個整數,求裡面出現次數最多的數,如果有多個重複出現的數,求出值最大的乙個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。輸入格式 第一行輸入乙個整數 n 1 n 100000 n 1 le n le 100000 n 1 n 1000 ...

計蒜客 蒜頭君倒水

問題描述 蒜頭君倒了 2 杯熱水在杯子裡面,第一杯裡面有 a 毫公升,第二杯裡面有 b 毫公升。水太熱了,蒜頭君決定通過輪流倒水的方式來讓水冷下來。每次倒水蒜頭君把第一杯的 x 的水倒入第二杯,把第二杯的 y 的水倒入第一杯 蒜頭君有奇特的方法,能讓這一過程是同是發生的,沒有先後之分 蒜頭君一直重複...