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

得物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.dtcms.com/a/358590.html

相关文章:

  • Odoo与Django 的区别是什么?
  • Ztero文献管理工具插件设置——亲测有效
  • Python实现点云AABB和OBB包围盒
  • 合金电阻选型7大原则-华年商城
  • 趣味学RUST基础篇(结构体方法)
  • 软考中级习题与解答——第一章_数据结构与算法基础(2)
  • 线性代数理论——状态空间
  • uniapp开发 移动端使用字符串替换注意事项
  • CrystalDiskInfo 9.0 最新版安装步骤详解(从下载到查看硬盘状态)​
  • 三重积分的对称性
  • React前端开发_Day6-Day9_极客园项目
  • Spring Data Redis 的使用方法
  • Dify工作流之合同信息提取
  • 【C++】AVL树(详解)
  • Coze源码分析-API授权-获取令牌列表-前端源码
  • Spring注解演进与自动装配原理深度解析:从历史发展到自定义Starter实践
  • 逆向思维下,如何把基金投资做亏?
  • 佛山B2B企业GEO搜索优化科普指南
  • 模拟实现STL中的list容器
  • vue中的与,或,非
  • C++:list容器--模拟实现(下篇)
  • 粒子群优化算法(PSO)
  • vscode terminal远程连接linux服务器GUI图形界面
  • Linux/UNIX系统编程手册笔记:文件I/O、进程和内存分配
  • Ferris Wheel (贪心 | 双指针)
  • 【MogDB】在刚发布的银河麒麟v11上安装MogDB
  • 微电网调度(风、光、储能、电网交互)(MatlabPython代码实现)
  • open webui源码分析13-模型管理
  • Python生成免安装exe
  • 承上启下的JDK13安装步骤及下载(附小白详细教程)