哪个网站有摄影作品浙江信息港网
2026/4/6 7:56:44 网站建设 项目流程
哪个网站有摄影作品,浙江信息港网,wordpress优化软件,深圳光明专业网站设计题目来源 U535982 C-小梦的AB交换 - 洛谷 题目描述 小梦有一个长度为 2∗n 的 AB 串 s#xff0c;即 s 中只包含 A 和 B 两种字符#xff0c;且其中恰好有 n 个 A 和 n 个 B。 他可以对 s 执行以下操作#xff1a; ∙…题目来源U535982 C-小梦的AB交换 - 洛谷题目描述小梦有一个长度为 2∗n 的 AB 串 s即 s 中只包含 A 和 B 两种字符且其中恰好有 n 个 A 和 n 个 B。他可以对 s 执行以下操作∙ 选择 i,j (1≤i,j≤2⋅n,ij)并交换 si​ 和 sj​。他想知道需要至少多少次操作才能使得 s 满足相邻的字符不相同请你帮他算一算吧。输入格式本题有多组测试数据。输入的第一行包含一个正整数 T表示数据组数。接下来包含 T 组数据每组数据的格式如下第一行一个正整数 n表示 s 长度的一半。第二行一个长度为 2∗n 的字符串 s保证只由 A, B 两种字符构成。输出格式对于每组测试数据在单独的一行输出一个整数表示最少进行的操作次数。输入输出样例输入 #1复制2 3 AAABBB 3 ABAABB输出 #1复制1 1说明/提示【样例 1 解释】交换 s2​A 和 s5​B得到 s ABABAB满足题意一次交换即可。【数据范围】令 N 表示 T 组数据中 n 的总和。对于 50% 的数据有T1,1≤N≤3。对于所有的测试数据有 1≤T≤100,1≤N≤106。题解import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); int T sc.nextInt(); // 读取测试数据组数 while (T-- 0) { int n sc.nextInt(); // 每组数据的n String s sc.next(); // 每组数据的字符串s // 构建两种合法的交替字符串 // 形式1B开头交替排列B A B A... StringBuilder pattern1 new StringBuilder(); // 形式2A开头交替排列A B A B... StringBuilder pattern2 new StringBuilder(); for (int i 0; i 2 * n; i) { if (i % 2 0) { // 偶数位从0开始 pattern1.append(B); pattern2.append(A); } else { // 奇数位 pattern1.append(A); pattern2.append(B); } } // 计算原字符串与两种形式的差异数交换次数差异数/2 int cost1 calcDiff(s, pattern1.toString()); int cost2 calcDiff(s, pattern2.toString()); // 输出最小交换次数 System.out.println(Math.min(cost1, cost2)); } sc.close(); } // 计算原字符串与目标模式的差异数返回交换次数差异数/2 private static int calcDiff(String s, String pattern) { int diff 0; for (int i 0; i s.length(); i) { if (s.charAt(i) ! pattern.charAt(i)) { diff; } } return diff / 2; }1. 先获取数据组数2.然后我们可以用循环来获取数据3.建立两种模式来实现这个字母不同的结果最后再比较这个操作过后的字符串和原来的字符串的区别即可注释s.charAt(i)是获取数组中对应的字母

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询