Description
给定一个长度为n的序列(n <= 100) ,给定m(m <= n),求该序列中有多少值不相同的长度为m的严格上升子序列。
Input
先输入一个T,表明下面会有几组数据。 每组数据先输入一个n,m,表明数组大小和上升子序列长度。 下面一行有n个数代表该数组,且 1<=a[i]<=n;
Output
输出为一行,只需输出上述要求的个数(结果对1000000009取余)。
Sample Input
42 21 24 31 2 4 45 41 2 3 5 45 11 1 1 2 2
Sample Output
1122 思路: 还是第三届山科校赛的题目 这个题开两个二维dp数组,第二个是一个延时的dp 也就是没有更新当前状态的dp 再开一个一维数组记一下当前位置数字上次出现的位置 如果上次出现过的话就减掉上一次的dp值去重 dp[i][j]表示以值i为结尾长度为j的最长上升子序列的不同值的数量 具体看代码吧。。
/* ***********************************************Author :devilCreated Time :2016/4/26 22:18:57************************************************ */#include#include #include #include #include #include #include #include