当前位置: 首页 > web >正文

得物25年春招-安卓部分编程题

1.实现抽象方法

已知抽象类Base中定义了calculate方法,该方法的计算过程依赖于sum()和avg(),而后两个方法均为抽象方法。要求定义Base的子类Sub类,并实现父类的抽象方法,使得main函数中的运算逻辑得以正确执行。

输入描述:

两个整数

输出描述:

两个整数的和除以两个整数的平均值(平均值为int类型,不考虑小数问题)

输入:

1 2

输出:

3

代码
import java.util.Scanner;
public class Main {public static void main(String[] args) {//Sub是需要你定义的子类Base base = new Sub();Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int x = scanner.nextInt();int y = scanner.nextInt();base.setX(x);base.setY(y);System.out.println(base.calculate());}}
}
abstract class Base {private int x;private int y;public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public int calculate() {if (avg() == 0) {return 0;} else {return sum() / avg();}}/*** 返回x和y的和*/public abstract int sum();/*** 返回x和y的平均值*/public abstract int avg();
}
class Sub extends Base {//write your code here......public int sum() {return getX() + getY();}public int avg() {return (getX() + getY()) / 2;}
}

2.创造新世界

众所周知计算机代码底层计算都是0和1的计算,牛牛知道这点之后就想使用0和1创造一个新世界!牛牛现在手里有n个0和m个1,给出牛牛可以创造的x种物品,每种物品都由一个01串表示。牛牛想知道当前手中的0和1可以最多创造出多少种物品。

输入描述:

输入数据包括x+1行:
第一行包括三个整数x(2≤x≤20),n(0≤n≤500),m(0≤m≤500),以空格分隔,
接下来的x行,每行一个01串item[i],表示第i个物品。每个物品的长度length(1≤length≤50)

输出描述:

输出一个整数,表示牛牛最多能创造多少种物品

输入
3 3 1
1
00
100
输出

2

代码
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int x = scanner.nextInt(); // 物品种类数int n = scanner.nextInt(); // 0的数量int m = scanner.nextInt(); // 1的数量scanner.nextLine(); // 消耗换行符// 存储每种物品需要的0和1的数量int[][] counts = new int[x][2]; // counts[i][0]是0的数量,counts[i][1]是1的数量for (int i = 0; i < x; i++) {String item = scanner.nextLine();int zeros = 0, ones = 0;for (char c : item.toCharArray()) {if (c == '0') zeros++;else ones++;}counts[i][0] = zeros;counts[i][1] = ones;}// 动态规划// dp[i][j]表示使用i个0和j个1最多能创造的物品种类数int[][] dp = new int[n + 1][m + 1];for (int k = 0; k < x; k++) {int zerosNeeded = counts[k][0];int onesNeeded = counts[k][1];// 从后往前更新,避免重复选择同一种物品for (int i = n; i >= zerosNeeded; i--) {for (int j = m; j >= onesNeeded; j--) {dp[i][j] = Math.max(dp[i][j], dp[i - zerosNeeded][j - onesNeeded] + 1);}}}System.out.println(dp[n][m]);}
}

3.ISBN号码

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其中符号"-"是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。

ISBN码的首位数字表示书籍的出版语言,例如0代表英语;
第一个分隔符"-"之后的三位数字代表出版社,例如670代表维京出版社;
第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。

识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2…以此类推。用所得的结果mod11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
例如ISBN号码0-670-82162-4中的识别码4是这样得到的:
对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即
0×1+6×2+…+2×9=158,然后取158 mod 11的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出"Right";如果错误,则输出你认为是正确的ISBN号码。

输入描述

只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。

输出描述

共一行,假如输入的ISBN号码的识别码正确,那么输出"Right",否则,按照规定的格式,输出正确的ISBN号码(包括分隔符"-")。

示例1

输入:0-670-82162-4

输出:Right

示例2

输入:0-670-82162-0

输出:0-670-82162-4

代码
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String isbn = scanner.nextLine();scanner.close();// 移除所有分隔符,提取数字部分String cleaned = isbn.replaceAll("-", "");// 前9位是计算识别码的基础String mainPart = cleaned.substring(0, 9);// 输入的识别码char inputCheck = cleaned.charAt(9);// 计算识别码int sum = 0;for (int i = 0; i < 9; i++) {int digit = mainPart.charAt(i) - '0';sum += digit * (i + 1);}// 计算正确的识别码int mod = sum % 11;char correctCheck;if (mod == 10) {correctCheck = 'X';} else {correctCheck = (char) ('0' + mod);}// 检查是否正确if (inputCheck == correctCheck) {System.out.println("Right");} else {// 构建正确的ISBN号码(保持原格式)StringBuilder correctIsbn = new StringBuilder(isbn);correctIsbn.setCharAt(isbn.length() - 1, correctCheck);System.out.println(correctIsbn.toString());}}
}
http://www.xdnf.cn/news/19369.html

相关文章:

  • GD32入门到实战21--输入捕获
  • 【C++】日期类实现详解:代码解析与复用优化
  • C#正则表达式与用法
  • 【基础-单选】关于Tabs组件页签的位置设置,下面描述错误的是
  • 免费在线图片合成视频工具 ,完全免费
  • uni.onBLECharacteristicValueChange接收到数据,返回的value为{}的原因及其获取方法
  • 佳易王钟表维修养护管理系统:开启钟表维修高效管理新篇章​就#软件操作教程
  • Mysql 学习day 2 深入理解Mysql索引底层数据结构
  • React前端开发_Day6-Day9_极客园项目
  • C语言 - 输出参数详解:从简单示例到 alloc_chrdev_region
  • Spring AI 的应用和开发
  • 如何简单建设一个网站,让用户快速找到你。
  • 在PowerPoint和WPS演示让蝴蝶一直跳8字舞
  • Python生成免安装exe
  • SAP PP模块的MPS
  • Vue加载速度优化,verder.js和element.js加载速度慢解决方法
  • 防火墙技术(二):安全区域
  • C#调用c++ dll读取2进制文件时而正常,时而异常
  • 语义分割目前还是研究热点吗?
  • 如何快速了解项目管理基础
  • 【具身智能】【机械臂】机械臂轨迹规划项目以及资料汇总【持续更新】
  • 【物联网】MQTT / Broker / Topic 是什么?
  • windows 谷歌浏览器把英文改成中文
  • 【路由器】TP Link 路由器为何无法进入管理后台
  • 关于铭飞平台企业官网模板使用中常到的问题、企业官网的百度认证以及IDEA编辑启动器的快捷方法/Apipost本地和云端没法同步的问题解决
  • 【软考架构】SOA与微服务解疑
  • React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
  • Unity笔记(八)——资源动态加载、场景异步加载
  • 迷你电脑用到什么型号的RJ45网口
  • 揭秘表格推理的“思维革命”:RoT模型介绍