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); } }
)