蒜頭君從乙個 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 的水倒入第一杯 蒜頭君有奇特的方法,能讓這一過程是同是發生的,沒有先後之分 蒜頭君一直重複...