09.14广联达笔试
第一道(AC)
删除相邻重复元素 先手的是否能赢?
思路:删除相邻重复,删除次数为奇数就赢,偶数就输
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
String sb = sc.next();
list.add(sb);
}
for (int i = 0; i < n; i++) {
int time = find(list.get(i));
if (time % 2 == 0) {
System.out.println("No");
} else {
System.out.println("Yes");
}
}
}
public static int find(String sb) {
int pre = 0;
int time = 0;
while (true) {
pre = time;
for (int i = 1; i < sb.length(); i++) {
if (sb.charAt(i) == sb.charAt(i - 1)) {
time++;
sb = sb.substring(0, i - 1) + sb.substring(i + 1);
}
}
if (pre == time) {
break;
}
}
return time;
}
} 第二道(贪了82%,有没有AC大佬贴下代码
剪邮票,最少花费
思路:第一刀切小的,后面都切成1x1的,但只过了82
)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
int chang = n;
int kuang = m;
int min = Math.min(m,n);
int res = 0;
int time = 0;
int x = min;
for (int i = 2; i <= k; i++) {
if (time != x) {
res += min*min;
min = 1;
time++;
} else {
min = Math.min(Math.max(n,m) - 1, Math.min(n,m);
res += min*min;
time++;
}
}
System.out.println(res);
}
} )
滴滴公司福利 1784人发布