题目描述

题目内容来自(https://blog.csdn.net/goldarmour/article/details/129152400)

【Excel单元格数值统计】

Excel 工作表中对选定区域的数值进行统计的功能非常实用。

仿照Excel的这个功能,请对给定表格中选中区域中的单元格进行求和统计,并输出统计结果。

为简化计算,假设当前输入中每个单元格内容仅为数字或公式两种。

● 如果为数字,则是一个非负整数,形如3、77

● 如果为公式,则固定以=开头,且仅包含下面三种情况:

1.等于某单元格的值,例如=B12

2.两个单元格的双目运算(仅为+或-),形如=C1-C2、C3+B2

3.单元格和数字的双目运算(仅为+或-),形如=B1+1、100-B2

注意:

公式内容都是合法的,例如不存在,=C+1、=C1-C2+B3,=5、=3+5

不存在循环引用,例如A1=B1+C1、C1=A1+B2

内容中不存在空格、括号

输入描述:

第一行两个整数rows cols,表示给定表格区域的行数和列数,1<=rows<=20,1<=cols<=26。

接下来rows行,每行cols个以空格分隔的字符串,表示给定表格values的单元格内容。

最后一行输入的字符串,表示给定的选中区域,形如A1:C2。

输出描述:

一个整数,表示给定选中区域各单元格中数字的累加总和,范围-2,147,483,648 ~ 2,147,483,647

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

1 3

1 =A1+C1 3

A1:C1

输出

8

示例2 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

5 3

10 12 =C5

15 5 6

7 8 =3+C2

6 =B2-A1 =C2

7 5 3

B2:C4

输出

29

备注:

表格的行号1~20,列号A~Z,例如单元格B3对应values[2][1]。

一种解法

不保证通过率

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;/*** https://blog.csdn.net/goldarmour/article/details/129152400*/
public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] split = br.readLine().split(" ");int r = Integer.parseInt(split[0]);int c = Integer.parseInt(split[1]);int[][] nums = new int[r][c];String[][] shi = new String[r][c];for (int i = 0; i < r; i++) {String[] strings = br.readLine().split(" ");for (int j = 0; j < c; j++) {if (strings[j].startsWith("=")) {shi[i][j] = strings[j];} else {shi[i][j] = "";nums[i][j] = Integer.parseInt(strings[j]);}}}String[] need = br.readLine().split(":");int nx1,nx2,ny1,ny2;nx1 = need[0].charAt(0)-'A';nx2 = need[1].charAt(0)-'A';ny1 = Integer.parseInt(need[0].substring(1))-1;ny2 = Integer.parseInt(need[1].substring(1))-1;for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {String s = shi[i][j];if (!s.isEmpty()) {s = s.substring(1);int x1, x2, y1, y2;int num1, num2;if (s.contains("+")) {int t = s.indexOf('+');if (s.charAt(0) >= 'A') {x1 = s.charAt(0) - 'A';y1 = Integer.parseInt(s.substring(1, t))-1;num1 = nums[y1][x1];} else {num1 = Integer.parseInt(s.substring(0, t));}if (s.charAt(t + 1) >= 'A') {x2 = s.charAt(t + 1) - 'A';y2 = Integer.parseInt(s.substring(t + 2))-1;num2 = nums[y2][x2];} else {num2 = Integer.parseInt(s.substring(0, t));}nums[i][j] = num1 + num2;} else if (s.contains("-")) {int t = s.indexOf('-');if (s.charAt(0) >= 'A') {x1 = s.charAt(0) - 'A';y1 = Integer.parseInt(s.substring(1, t))-1;num1 = nums[y1][x1];} else {num1 = Integer.parseInt(s.substring(0, t));}if (s.charAt(t + 1) >= 'A') {x2 = s.charAt(t + 1) - 'A';y2 = Integer.parseInt(s.substring(t + 2))-1;num2 = nums[y2][x2];} else {num2 = Integer.parseInt(s.substring(0, t));}nums[i][j] = num1 - num2;} else {int x = s.charAt(0) - 'A';//lieint y = Integer.parseInt(s.substring(1))-1;//hangnums[i][j] = nums[y][x];}}}}int result = 0;for (int i = ny1; i <= ny2; i++) {for (int j = nx1; j <= nx2; j++) {result+=nums[i][j];}}System.out.println(result);}
}

华为机试真题 Java 实现【Excel单元格数值统计】【2022.11 Q4】相关推荐

  1. 【100%通过率】华为OD机试真题 Java 实现【预订酒店】【2022.11 Q4 新题】

             所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录<

  2. 华为OD机试真题 Java 实现【完美走位】【2022.11 Q4】

    题目描述: 输入一个长度为4的倍数的字符串,字符串中仅包含WASD四个字母. 将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换,如果替换后整个字符串中WASD四个字母出现的频数相同,那么 ...

  3. 【100%通过率】华为OD机试真题 Java 实现【完美走位】【2022.11 Q4新题】

             所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录

  4. 【100%通过率】华为OD机试真题 Java 实现【猜字谜】【2022.11 Q4 新题】

     所有题目均有四种语言实现.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 题目描述: 小干设计了一人简单的清字谈游戏,游戏的迷面是一人错误的单词,比如n ...

  5. 【100%通过率】华为OD机试真题 Java 实现【投篮大赛】【2022.11 Q4 新题】

          所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录

  6. 【100%通过率】华为OD机试真题 Java 实现【分奖金】【2022.11 Q4 新题】

             所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录<

  7. 【100%通过率】华为OD机试真题 Java 实现【字符串解密】【2022.11 Q4 新题】

             所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录<

  8. 【100%通过率】华为OD机试真题 Java 实现【货币单位换算】【2022.11 Q4 新题】

        所有题目均有四种语言实现.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 题目描述: 记账本上记录了若干条多国货币金额,需要转换成人民币分 (fe ...

  9. 华为机试真题 C++ 实现【处理器问题】【2022.11 Q4 新题】

             所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录<

  10. 【100%通过率】华为机试真题 C++ 实现【对称美学】【2022.11 Q4 新题】

             所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录

最新文章

  1. [CF1066C]Books Queries
  2. 20165306 我期望的师生关系
  3. C和指针之字符串编程练习6
  4. php有多少魔术方法,PHP常用的几个魔术方法
  5. 【AI视野·今日Robot 机器人论文速览 第十五期】Fri, 25 Jun 2021
  6. 英特尔发布全新高性能显卡品牌Arc,首款显卡将于 2022 年上市
  7. 去除NSLog时间戳及其他输出信息
  8. HTML 5.2 有哪些新内容?
  9. mysql 创建表格time类型_第十九天MySQL数据库入门(mysql数据类型)
  10. 【Java学习笔记之三】java中的变量和常量
  11. win10熄屏时间不对_Windows10下显示时间不正确的原因及解决技巧
  12. html百分比设置高度的原理,css height百分比 css高度百分比使用教程
  13. 微信小程序页面实现防抖
  14. [Python图像处理] 四十三.Python图像形态学处理万字详解(腐蚀膨胀、开闭运算、梯度顶帽黑帽运算)
  15. 美团外卖饿了么竞品分析:共生存?还是你死我亡?
  16. aps是什么意思_轿车里面的APS是什么意思 ?
  17. 七牛云 CDN 调用
  18. 自己整理的前端编码规范,各位码友们想到了其它的可以留言补充
  19. Promise.all、Promise.allSettled、Promise.any、Promise.race
  20. GrabCut算法、物体显著性检测

热门文章

  1. sscanf分割字符串
  2. 决不轻言放弃 王雪红全力打造威盛王国
  3. html跨域传值,iframe跨域传值踩坑
  4. 苹果电脑关于网络参数的查询
  5. 硬件基础——过流与短路保护
  6. 从maven私服仓库中下载snapshots报错
  7. vivooriginos和鸿蒙对比,凸显浓厚节日氛围 vivo OriginOS新春版上线
  8. iPhone 12怎么在照片上涂鸦
  9. Visual Studio 2019下载、安装全教程、及使用简单窗体应用程序
  10. 给你的网站“加把锁” 动态口令轻松实现