难度数量之和等于各类型试题数量之和,已知题库中各种类型的题的数量,求按照给定的难度数量和各试题数量能否随机抽题,如果能的话,每一种题抽几道。(不能使用3层以上for循环,保证效率,抽题数量可能为100道)
java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
31条回答 默认 最新
- CSDN专家-sinJack 2024-09-11 09:42关注
获得1.00元问题酬金 import java.util.Arrays; public class TestRandom { public static void main(String[] args) { int[] types = {4, 3, 2};// 简单、普通、困难题的数量 int[] ratios = {5, 3, 2};// 单选、多选、判断题的数量 int[][] questionCounts = { {1, 1, 1}, // 简单题 {2, 2, 1}, // 普通题 {2, 1, 0} // 困难题 }; int[][] selectedQuestions = selectQuestions(ratios, types, questionCounts); System.out.println(Arrays.deepToString(selectedQuestions)); } public static int[][] selectQuestions(int[] ratios, int[] types, int[][] questionCounts) { int numDifficulties = ratios.length; int numTypes = types.length; // 计算总题数 int totalQuestions = 0; for (int count : ratios) { totalQuestions += count; } for (int count : types) { totalQuestions += count; } // 初始化结果数组 int[][] selectedQuestions = new int[numDifficulties][numTypes]; // 分配题目数量 for (int d = 0; d < numDifficulties; d++) { int remainingQuestions = ratios[d]; for (int t = 0; t < numTypes; t++) { int maxPossible = Math.min(remainingQuestions, questionCounts[d][t]); selectedQuestions[d][t] = maxPossible; remainingQuestions -= maxPossible; } } // 验证分配结果 int totalSelected = 0; for (int[] row : selectedQuestions) { for (int count : row) { totalSelected += count; } } if (totalSelected != totalQuestions) { throw new IllegalArgumentException("无法满足题目数量要求"); } return selectedQuestions; } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
- ¥15 ArcGIS批量裁剪
- ¥15 labview程序设计
- ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
- ¥15 Cloudreve保存用户组存储空间大小时报错
- ¥15 伪标签为什么不能作为弱监督语义分割的结果?
- ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
- ¥15 游戏盾如何溯源服务器真实ip?
- ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
- ¥15 android 集成sentry上报时报错。