🍑 f[1]://表示以s[i]结尾的上升子序列个数(注意判重)
🍑 AC code
public class Main
{
public static void main(String[] args)
{
String s = "tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";
int len = s.length();
int[] f = new int[200];//表示以s[i]结尾的上升子序列个数(注意判重)
for (int i = 0; i < len; i++)
{
f[i] = 1;// 单一一个字符也是一个上升序列
for (int j = 0; j < i; j++)
{
if (s.charAt(i) > s.charAt(j))
f[i] += f[j];
if (s.charAt(i) == s.charAt(j))
// 直接把以a[j]结尾的上升序列置空,统一计算在以a[i]结尾的上升序列数中
f[j] = 0;
}
}
long ans = 0;
for (int i = 0; i < len; i++)
ans += f[i];
System.out.println(ans);
}
}