Increasing Sub-sequence

Description

當你看到這個題的時候,應該已經通過前面所有題目了吧~嗯,真正的挑戰纔剛剛開始。
題目是這樣的,求給定的長度爲N的整數序列中,長度爲M的遞增子序列的數量。
或許你還不知道什麼是子序列,那我就來解釋一下:
假設一個序列爲1,2,3,4,5,6,7
我們從中刪除一些數字,剩下的數字還保持原來的順序,得到了:
1,3,4,6
這就是原序列的一個子序列,而且它的後一項嚴格大於前一項,同時也是遞增子序列。

Input

第一行爲一個整數T,代表有T組測試數據。
對於每組測試數據,第一行爲兩個整數N, M(N<=100, M<=N)
接下來一行爲N個整數。

Output

對於每組測試數據,輸出該序列的長度爲M的遞增子序列的個數(結果在int範圍內)


程序源代碼:

#include<iostream>
using namespace std;
int fac(int n)
{
int c;
if(n==1) c=1;
else
c=n*fac(n-1);
return c;
}
int main()
{
int T;
int N,M;
int a[100];
cin>>T;
for(int i=0;i<T;i++)
{
cin>>N>>M;
int s;
for(int k=0;k<N;k++)
{
cin>>a[k];
}
s=fac(N)/(fac(M)*fac(N-M));
cout<<s<<endl;
}
return 0;
}

運行截圖:



這個題好像做的太投機取巧了,我直接用排列組合的公式算出來了。


大神們對這個提有什麼好的思路嗎,求介紹,謝謝。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章