java代码实现:小明和小红正在玩一个游戏,这个游戏的规则是这样的: 给定一个01串,每个人进行操作时都可以消去若干个连续(可以只有一个)的0或者1。 两人轮流进行操作,直到01串被完全消去,最后消去最多1的那个人获胜。 小明为了体现自己的绅士风度,每次让小红优先进行操作,然后他再进行操作。 现在小红想知道游戏结束时她能消去多少1,你能高效的帮她算一下这个数吗? 注:不考虑博弈的情况,两个人每次操作时都会贪心地考虑当前步的最优操作(优先考虑消去1),不会考虑全局的影响。 Input Format 第一行是一个整数 ,表示该输入包含 个样例。 剩下的 行,每行都有若干个01组成。 Output Format 行,每行表示该输入下,小红能预期得到多少分
时间: 2024-03-15 11:43:12 浏览: 148
以下是 Java 代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < t; i++) {
String s = scanner.nextLine();
int count = 0;
int len = s.length();
for (int j = 0; j < len; j++) {
if (s.charAt(j) == '1') {
count++;
}
}
if (count % 2 == 0) {
System.out.println(count / 2);
} else {
System.out.println((count - 1) / 2);
}
}
scanner.close();
}
}
```
思路解析:
1. 对于每个测试用例,统计字符串中1的个数。
2. 如果1的个数为偶数,那么小红最多消去的1的个数为1的个数的一半。
3. 如果1的个数为奇数,那么小红最多消去的1的个数为1的个数减1的一半。
时间复杂度:$O(n)$,其中 $n$ 是字符串的长度。
阅读全文