2019年腾讯提前批笔试编程题第五题
题目描述
小Q给你n个数1、2、3…n, 代表n个楼,第i个楼的高度为i,每个楼会有一种颜色现在问有多少的排列满足从左往右(站在左边很远的地方看)看能看到L种颜色(即看到了L-1次颜色的变化),答案对1e9+9取模。
如果两个相同颜色楼的高度分别问H1,H2(H1<H2),H1在左边,且H1 H2之间的楼都比H1矮,那么站在左边来看就是一种颜色。
你能看到一个楼的前提是这个楼之前的楼都比它矮
输入描述:
第一行输入两个整数n,L(1 ≤ n ≤ 1296),(1 ≤ L ≤ 1296),(1≤L≤n)
第二行输入n个整数,ci表示每个楼的颜色(1≤ci≤n)
输出描述:
输出一个整数
示例
输入:
4 3
1 1 2 1
输出:
6
import java.util.*;
/**
* @author Milingyun
* @date 2019-03-09 19:36
*/
public class Building {
//全排列
public static List<List<Integer>> permute(int[] nums)
{
List<List<Integer>> all=new ArrayList<List<Integer>>();
allSort(nums, 0, nums.length-1, all);
return all;
}
public static void allSort(int[] array,int