算法设计:字典序问题
来源:互联网 发布:电驴连接不上kad网络 编辑:程序博客网 时间:2024/06/05 06:35
代码实现:
@Test
public void fn1_2_1() {
int n = new Scanner(System.in).nextInt();
LinkedList<String> list = new LinkedList<String>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < n; i++) {
list.add(sc.nextLine());
}
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
int len = str.length();
byte[] bs = str.getBytes();
int[] is = new int[len];
for (int m = 0; m < len; m++) {
is[m] = (int) bs[m] - 96;
}
long num1 = 0l;
for (int p = 1; p < len; p++) {
num1 += getAll(p);
}
long num2 = 0l;
num2 = getCode(is, num2, 1);
if (len == 1) {
num2++;
}
long result = num1 + num2;
System.out.println(result);
}
}
private long getCode(int[] is, long rel, int start) {
int len = is.length;
if (len > 0) {
int first = is[0];
int[] temp = new int[len - 1];
for (int i = 0; i < len - 1; i++) {
temp[i] = is[i + 1];
}
for (int i = 1; i < first; i++) {
if (i >= start) {
rel += getByFirst(i, len);
}
}
start = first;
return getCode(temp, rel, start);
} else {
return rel;
}
}
// 长度为k的升序字符串的数量
private long getAll(int k) {
long sum = 0l;
for (int i = 1; i <= 26 - k + 1; i++) {
sum += getByFirst(i, k);
}
return sum;
}
// 以i起始,长度为k的升序字符串的数量
private long getByFirst(int i, int k) {
long sum = 0l;
if (k - 1 > 0) {
for (int p = i; p <= 26; p++) {
for (int q = p + 1; q <= 26; q++) {
sum += getOne(q, k - 1, sum);
}
}
} else {
sum += 1;
}
return sum;
}
private long getOne(int i, int k, long rel) {
if (k == 1) {
return 1l;
} else {
for (int j = i + 1; j <= 26; j++) {
rel += getOne(j, k - 1, rel);
}
return rel;
}
}
- 算法设计:字典序问题
- 算法----字典序问题
- 排列的字典序问题 算法与设计
- 算法分析与设计之排列的字典序问题
- 算法实现题 字典序问题
- 第一章 算法概述(字典序问题)
- 算法笔记 //01_字典序问题
- 2-1字典序问题 算法
- 算法 字典问题
- 算法作业-统计数字问题&字典序问题&最多约数问题
- 贪心算法——字典序最小问题
- 贪心算法-Best cow line-字典序问题
- 字典序算法
- 字典序算法
- 字典序算法
- 字典序算法
- 字典序算法
- 字典序算法
- 一元多项式的乘法与加法运算(20 分)
- js将字符串转换成对象和数组
- 熵与信息增益随记
- <包法利夫人>读后感
- 『0009』
- 算法设计:字典序问题
- implicitlywait
- 个人环境搭建——搭建jenkins持续构建集成环境
- 【JVM】4_利用GCLib测试方法区溢出
- 冒泡排序:python
- 【leetcode】搜索范围(二分查找升序数组target元素上下界)
- Linux驱动修炼之道-SPI驱动框架源码分析(上)
- MySQL外键设置中的的 Cascade、NO ACTION、Restrict、SET NULL
- VC14(VC2015)安装失败,0x80240017