网站建设上海网站建设公司网站,服务营销案例100例,网站建设专业公司,网站模板50元第一题#xff1a;加密
小明学会了一种加密方式。他定义suc(x)为x在字母表中的后继#xff0c;例如a的后继为b#xff0c;b的后继为c… #xff08;即按字母表的顺序后一个#xff09;。特别的#xff0c;z的后继为a。对于一个原字符串S#xff0c;将其中每个字母x都替…第一题加密
小明学会了一种加密方式。他定义suc(x)为x在字母表中的后继例如a的后继为bb的后继为c… 即按字母表的顺序后一个。特别的z的后继为a。对于一个原字符串S将其中每个字母x都替换成其三重后继即suc(suc(suc(x)))的字母即完成了加密。例如abc加密后变成def suc(suc(suc(a)))d suc(suc(suc(b)))e, suc(suc(suc©))f。 现在小明知道一个加密后的字符串S’想请你找出他的原串S。 输入数据 3 def 输出数据 abc 直接模拟完成
Class solution{public static String findString(String s){int n s.length();String ans ;for(int i 0; i n; i ){if(s.charAt(i)a || s.charAt(i)b || s.charAt(i)c){ans (char) (s.charAt(i) - 3 26);}else{ans (char)(s.charAt(i) - 3);}}return ans;}
}
public main{public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.print(请输入字符串的长度);int n scanner.nextInt();System.out.print(请输入字符串);String input scanner.next();Solution s new Solution();System.out.println(s.findString(input));scanner.close();}
}第二题K排序
在算法中有各种各样的排序算法例如归并排序冒泡排序快速排序等等。本题中我们会使用一种新的排序算法K排序。
K排序算法描述如下首先算法需要按照某种规则选择该数列上至多K个位置将其对应的数抽出来其他的数都往左对齐之后这K个数排好序之后依次放在原数列末尾。以上过程算作一次操作。 例如对于数列[1,3,5,4,2]当K2时可以选择数字5和4之后数列变成[1,3,2,4,5]。 你的任务是对于给定的数列你需要计算出最少需要多少次上述操作使得整个数列从小到大排好序
样例输入 2 5 1 1 2 3 4 5 5 2 1 3 5 4 2 样例输出 0 2 主要思路是贪心每次找到当前未排序部分的最小值将其移动到正确的位置如果需要移动的距离超过了k则需要进行一次K排序操作。
import java.util.*;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();int k sc.nextInt();int[] nums new int[n];for (int i 0; i n; i) {nums[i] sc.nextInt();}int ans 0;int cur 0;while (cur n) {int minIndex cur;for (int i cur 1; i Math.min(cur k 1, n); i) {if (nums[i] nums[minIndex]) {minIndex i;}}if (minIndex cur) {cur;} else {int temp nums[minIndex];for (int i minIndex; i cur; i--) {nums[i] nums[i - 1];}nums[cur] temp;ans;}}System.out.println(ans);}}
}第三题: 涂色
给出一个数组。你需要求出按顺序对其进行一系列区间操作后最终所得的数组。
操作有三种
将下标在L到R之间的元素全部或上X。 将下标在L到R之间的元素全部与上X。 将下标在L到R之间的元素全部设为X。 输入描述
第一行有一个正整数N(1N100000)代表数组的长度。
第二行有N个非负整数范围在0到2^20-1之间代表数组中的元素。
第三行有一个正整数M(1M100000)代表操作次数。
第四行有M个正整数代表M次操作中的区间左端点L。
第五行有M个正整数代表M次操作中的区间右端点R。
第六行是一个长度为M的字符串|代表操作1代表操作2代表操作3。
第七行有M个正整数代表M次操作中的参数X。
输出描述
在一行中输出N个数代表所有操作按顺序完成后最终所得的数组。
样例输入 4 5 4 7 4 4 1 2 3 2 4 3 4 2 | 8 3 6 2 样例输出 8 2 2 0