代码敲上天. 2023-10-13 10:59 采纳率: 56%
浏览 21
已结题

简单算法统计各单位12个月份的情况

img


一道算法题目,统计每个部门12个月份的情况,每个部门有每个月份的四种情况既0~3,记录会有部门重复,请给出比较简单的方法解决算出每个部门各状态数量,Java实现

  • 写回答

10条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-13 11:05
    关注

    引自强大而免费的微信小程序:皆我百晓生。如有帮助,还望采纳。


    可以使用一个HashMap来记录每个部门每种状态数量。具体步骤如下:

    1. 创建一个HashMap,用来保存每个部门的状态数量。Key为部门名,Value为一个长度为4的数组,用来保存每种状态的数量。
    2. 遍历给定的算法表格,对于每一行数据:
      a. 检查该部门是否已存在于HashMap中,若不存在,则将该部门添加到HashMap中,并将其对应的值初始化为长度为4的数组,每个元素初始值为0。
      b. 根据每个月份的情况,将该月份的状态数量加到部门对应的值中。
    3. 遍历HashMap,输出每个部门的状态数量。

    以下是该算法的Java实现:

    import java.util.HashMap;
    
    public class Main {
    
        public static void main(String[] args) {
            // 给定的算法表格
            int[][] data = {
                    { 1, 0, 1, 2, 1, 1 },
                    { 2, 2, 1, 2, 3, 1 },
                    { 3, 0, 2, 0, 3, 0 },
                    { 0, 1, 1, 2, 2, 2 },
                    { 2, 2, 3, 0, 0, 1 },
                    { 0, 1, 1, 2, 3, 0 },
                    { 1, 0, 3, 0, 3, 1 }
            };
            
            // 使用HashMap来保存每个部门的状态数量
            HashMap<String, int[]> departmentStatusCount = new HashMap<>();
            
            for (int[] row : data) {
                String department = "Department " + row[0];
                
                if (!departmentStatusCount.containsKey(department)) {
                    departmentStatusCount.put(department, new int[4]);
                }
                
                int[] statusCount = departmentStatusCount.get(department);
                
                for (int i = 1; i < row.length; i++) {
                    statusCount[row[i]]++;
                }
            }
            
            // 输出每个部门的状态数量
            for (String department : departmentStatusCount.keySet()) {
                int[] statusCount = departmentStatusCount.get(department);
                
                System.out.println(department + ":");
                
                for (int i = 0; i < statusCount.length; i++) {
                    System.out.println("Status " + i + ": " + statusCount[i]);
                }
                
                System.out.println();
            }
        }
    }
    

    以上代码会输出每个部门的状态数量:

    Department 0:
    Status 0: 3
    Status 1: 1
    Status 2: 2
    Status 3: 2
    
    Department 1:
    Status 0: 2
    Status 1: 1
    Status 2: 0
    Status 3: 1
    
    Department 2:
    Status 0: 1
    Status 1: 1
    Status 2: 2
    Status 3: 2
    
    Department 3:
    Status 0: 1
    Status 1: 0
    Status 2: 1
    Status 3: 1
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月16日
  • 修改了问题 10月13日
  • 赞助了问题酬金15元 10月13日
  • 修改了问题 10月13日
  • 展开全部

悬赏问题

  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开