牛牛的作業薄上有乙個長度為 n 的排列 a,這個排列包含了從1到n的n個數,但是因為一些原因,其中有一些位置(不超過 10 個)看不清了,但是牛牛記得這個數列順序對的數量是 k,順序對是指滿足 i < j 且 a[i] < a[j] 的對數,請幫助牛牛計算出,符合這個要求的合法排列的數目。
輸入描述:
每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個整數 n 和 k(1 <= n <= 100, 0 <= k <= 1000000000),接下來的 1 行,包含 n 個數字表示排列 a,其中等於0的項表示看不清的位置(不超過 10 個)。
輸出描述:
輸出一行表示合法的排列數目。
本文用到乙個計算序列全排列的函式:next_permutation函式,需要強調的是,next_permutation()在使用前需要對欲排列陣列按公升序排序,否則只能找出該序列之後的全排列數。程式設計的時候,靈活應用庫函式可以,可以節省很多時間。
#include#include#include#include#include using namespace std;
int main()
for (int i = 1; i <=n; ++i)
if (find(s.begin(), s.end(), i) == s.end())
fuznum.push_back(i); // missing num
vector::iterator iter = fuznum.begin();
do } if (pairnum == k)
num++;
pairnum = 0;
} while (next_permutation(iter, iter + fuznum.size()));
cout << num << endl;
}
程式設計題 數列還原
牛牛的作業薄上有乙個長度為 n 的排列 a,這個排列包含了從1到n的n個數,但是因為一些原因,其中有一些位置 不超過 10 個 看不清了,但是牛牛記得這個數列順序對的數量是 k,順序對是指滿足 i j 且 a i a j 的對數,請幫助牛牛計算出,符合這個要求的合法排列的數目。輸入描述 每個輸入包含...
網易筆試程式設計題 Fibonacci數列
fibonacci數列是這樣定義的 f 0 0 f 1 1 for each i 2 f i f i 1 f i 2 因此,fibonacci數列就形如 0,1,1,2,3,5,8,13,在fibonacci數列中的數我們稱為fibonacci數。給你乙個n,你想讓其變為乙個fibonacci數,每...
演算法題 數列還原
牛牛的作業薄上有乙個長度為 n 的排列 a,這個排列包含了從1到n的n個數,但是因為一些原因,其中有一些位置 不超過 10 個 看不清了,但是牛牛記得這個數列順序對的數量是 k,順序對是指滿足 i j 且 a i a j 的對數,請幫助牛牛計算出,符合這個要求的合法排列的數目。輸入描述 每個輸入包含...