牛客網演算法學習筆記 排列組合

2021-07-12 05:39:45 字數 1736 閱讀 5429

在xxy的方格中,以左上角格仔為起點,右下角格仔為終點,每次只能向下走或者向右走,請問一共有多少種不同的走法

給定兩個正整數int x,int y,請返回走法數目。保證x+y小於等於12。

測試樣例:

2,2
返回:2
橫向要走x-1步,縱向要走y-1步,總共需要走,x+y-2步,其中有x-1橫向。c
class robot 

int c(int m,int n)

for(int i = 1;i<=m;i++)

for(int i = 1 ; i <=a;i++)

return result/(temp1*temp2);

}};

n個人站隊,他們的編號依次從1到n,要求編號為a的人必須在編號為b的人的左邊,但不要求一定相鄰,請問共有多少種排法?第二問如果要求a必須在b的左邊,並且一定要相鄰,請問一共有多少種排法?

給定人數n及兩個人的編號a和b,請返回乙個兩個元素的陣列,其中兩個元素依次為兩個問題的答案。保證人數小於等於10。

測試樣例:

7,1,2

返回:[2520,720]
第乙個:所有的排列組合中一半a在b左邊,一半a在b右邊
第二個:將兩個人看做乙個整體,所以一共只有n-1個人的全排列
class standinline

int result2 = 1;

for(int i = 1;i<=n-1;i++)

vectorresult;

result.push_back(result1/2);

result.push_back(result2);

return result;}};

9.4(思路比較模糊)
a(a也是他的編號)是乙個孤傲的人,在乙個n個人(其中編號依次為1到n)的佇列中,他於其中的標號為b和標號c的人都有矛盾,所以他不會和他們站在相鄰的位置。現在問你滿足a的要求的對列有多少種?

給定人數n和三個人的標號a,b和c,請返回所求答案,保證人數小於等於11且大於等於3。

測試樣例:

6,1,2,3

288
用排除的方式,先將a放在最左邊,ab相連的情況,再將a放在最右邊,ba相連的情況,然後還有ac,ca。但是這種排列方式中會有a出現在中間的情況,那麼就會重複減cab,和bac的情況,所以要加回來。
class lonelya 

for(int i = 1;i<=n - 1;i++)

for(int i = 1;i<=n-1 ; i++)

for(int i = 1;i<=n-2; i++)

minglepart = minglepart * 2;

result = result - 2*(part1 + part2) +minglepart;

return result;

}};

n顆相同的糖果,分給m個人,每人至少一顆,問有多少種分法。

給定n和m,請返回方案數,保證n小於等於12,且m小於等於n。

測試樣例:

10,3

返回:36
class distribution

int c(int n ,int m)

for(int i =1 ;i<= (n-m);i++)

for(int i = 1; i<=m;i++)

return result/(part1*part2);}};

牛客 挑選方案問題(排列組合)

自助餐廳裡有5個盤子,裡面裝的都是麵包。第1個盤子裡有無限個麵包 第2個盤子裡只有1個麵包 第3個盤子裡只有4個麵包 第4個盤子裡也有無限個麵包,但必須兩個兩個地拿 第5個盤子裡也有無限個麵包,但必須5個5個地拿 給定正整數n,求有多少種正好拿出n個麵包的方案。方案a和方案b不同,當且僅當方案a存在...

牛客網演算法學習記錄 排序

對於乙個int陣列,請編寫乙個氣泡排序演算法,對陣列元素排序。給定乙個int陣列a及陣列的大小n,請返回排序後的陣列。測試樣例 1,2,3,5,2,3 6 1,2,2,3,3,5 測試用例子只有正數。公升序 氣泡排序 比較簡單,主要就是注意排序時陣列的邊界。for int i 0 ia j 1 re...

牛客網演算法學習記錄 概率

n只螞蟻從正n邊形的n個定點沿著邊移動,速度是相同的,問它們碰頭的概率是多少?給定乙個正整數n,請返回乙個陣列,其中兩個元素分別為結果的分子和分母,請化為最簡分數。測試樣例 3返回 3,4 因為是正n邊型,所以所有的點的路程相同。他們的速度又是相同的。從總情況來說,乙個結點有兩種選擇,那麼n個結點就...