排列組合常考題型:
1.括號合法問題
//假設有n對左右括號,請求出合法的排列有多少個?合法是指每乙個括號都可以找到與之配對的括號,比如n = 1時,()是合法的,但是)(為不合法。 //
//給定乙個整數n,請返回所求的合法排列數。保證結果在int範圍內。 //
//測試樣例:
// 1
//返回:1
class parenthesissequence
for (int i = n+1; i > 0; --i)
return res; }
};
2.進出棧問題
//n個數進出棧的順序有多少種?假設棧的容量無限大。 //
//給定乙個整數n,請返回所求的進出棧順序個數。保證結果在int範圍內。 //
//測試樣例:
//1//返回:1
class inoutstack
for (int j = n+1; j > 0; --j)
return res; }
};
3.二叉樹結構問題
//求n個無差別的節點構成的二叉樹有多少種不同的結構? //
//給定乙個整數n,請返回不同結構的二叉樹的個數。保證結果在int範圍內。 //
//測試樣例:
//1//返回:1
class treecount
for (int j = n + 1; j > 0; --j)
return res; }
};
4.高矮排列問題
//12個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問排列方式有多少種? //
//給定乙個偶數n,請返回所求的排列方式個數。保證結果在int範圍內。 //
//測試樣例:
//1//返回:1
class highshortsort
for (int j = n/2 + 1; j > 0; --j)
return res; }
};
5.排隊買票問題
//2n個人排隊買票,n個人拿5塊錢,n個人拿10塊錢,票價是5塊錢1張,每個人買一張票,售票員手裡沒有零錢,問有多少種排隊方法讓售票員可以順利賣票。 //
//給定乙個整數n,請返回所求的排隊方案個數。保證結果在int範圍內。 //
//測試樣例:
//1//返回:1
class buytickets
for (int j = n + 1; j > 0; --j)
return res; }
};
6.錯裝信封問題
//有n個信封,包含n封信,現在把信拿出來,再裝回去,要求每封信不能裝回它原來的信封,問有多少種裝法 ? //
//給定乙個整數n,請返回裝發個數,為了防止溢位,請返回結果mod 1000000007的值。保證n的大小小於等於300。 //
//測試樣例:
//2//返回:1
//分析:
表示n封信的方法數
//2.將信n放在第i個信封內,i有n - 1中選擇
//3.分兩種情況:將第i封信放在第n個信封則剩下n - 2封信,即f(n - 2)
//其實就是假設n是另乙個i位,然後i不能放在該位,剩下為f(n - 1)
//4.可得f(n) = (n - 1)*(f(n - 1) + f(n - 2))
class combineenvelopebymistake
if (n == 2)
vectorarr(n + 1, 0);
arr[2] = 1;
for (int i = 3; i <= n; ++i)
return arr[n] % 1000000007; }
};
資料結構(十) 排序
1 順序表 pragma once includeconst int maxsize 20 typedef int datatype typedef struct datalist void swap datalist l,int a,int b void createlist datalist l...
直通BAT 資料結構與演算法八 位運算
1.不用任何額外變數交換兩個整數的值 請編寫乙個演算法,不用任何額外變數交換兩個整數的值。給定乙個陣列num,其中包含兩個值,請不用任何額外變數交換這兩個值,並將交換後的陣列返回。測試樣例 1,2 返回 2,1 vectorgetswap getswap vectornum 2.返回a和b中較大的,...
Python 資料結構與演算法 快排
1.先從待排序的陣列中找出乙個數作為基準數 取第乙個數即可 然後將原來的陣列劃分成兩部分 小於基準數的左子陣列和大於等於基準數的右子陣列。然後對這兩個子陣列再遞迴重複上述過程,直到兩個子陣列的所有數都分別有序。最後返回 左子陣列 基準數 右子陣列 即是最終排序好的陣列。def quicksort n...