algorithm - 如何找到字符串可能具有的对的最大值?

标签 algorithm optimization max

给你两个s:N和K。伦狗对满足以下条件的字符串感兴趣:

  • 字符串恰好有 N 个字符,每个字符要么是“A”,要么是“B”。
  • 字符串 s 可以有 K 对 (i, j) (0 <= i < j <= N-1) 使得 s[i] = 'A' 和 s[j] = 'B'。

一串 N 个字符的 K 的最大值是多少?

最佳答案

我们可以假设“A”在“B”之前,因为在每个解决方案中我们都可以将“A”重新排序到字符串的开头并获得相同或更大数量的对。例如,'BAA' 没有对,'ABA' 有一对,'AAB' 有两对。

如果我们有 a Ab B 那么我们有 K = a * b 对。因此,我们需要优化 K = a * b,因为 a + b = N

如果 N 是偶数,那么我们有:

a = b = N / 2, K = N * N / 4

如果 N 是奇数,我们有:

a = (N - 1) / 2, b = (N + 1) / 2, K = (N * N - 1) / 4

关于algorithm - 如何找到字符串可能具有的对的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29456446/

相关文章:

algorithm - 获取已使用动态规划获得的解决方案的实际步骤

algorithm - 类似于 Unblock Me 的游戏的关卡生成算法

python - 优化幻方生成时出现问题

java - 从上到下编号三角形

algorithm - 谁知道 Sedgewick-Vitter 算法?

algorithm - 平行四边形内的随机点

c - 为什么这样实现 log_sum 效率更高?

gcc 中的编译器优化

max - perl6 混合 Str 和 Int 参数的最小值和最大值

MySQL 查询自连接最大日期