在群里看到这个题目做了一下,图片侵删
测试用例:
输入:
6 5
eecbad
输出:
3
说明:满足的有 “eecbad” 和两种 “ecbad”,不同位置的 e 也算不同子序列。
输入:
10 2
aaaccebecd
输出:
126
思路:
- 先将字符串处理为整形数组,数组存各个字母的个数,记录字母种类
- 将不存在字母的位置去掉
- 选择第 i 种字母时,选择种类有 (1 << arr[i]) - 1 种
- dfs 选择 k 种字母,选择满 k 种记录增加到 sum
import java.util.*;
public class Main {
public static int sum = 0;
public static final int mod = 1000000007;
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan