问题描述
大学课程中,作业中可能有多少种不同的结果组合?
我很有趣地计算出完成本课程的独特方式的数量。为了使事情变得容易,没有局部标记。
以下是一些条件:
-
有四个可评估的任务
- 作业1:权重为10%
- 作业2:权重为15%
- 作业3:权重为15%
- 作业4:加权60%
-
每次评估的可能标记:
- 作业1:/ 10
- 作业2:/ 10
- 作业3:/ 10
- 作业4:/ 100
我对组合离散数学有些不满意。
从算法的角度来看,您将如何解决这个问题? 我想找出的是如何遍历每门课程的每个年级,并返回在这种情况下可以实现的独特组合的数量。
我尝试过:
public static void main(String[] args) {
int m = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
for (int k = 0; k < 11; k++) {
for (int l = 0; l < 101; L++) {
m++;
}
}
}
}
System.out.println(m);
//out: 134431
}
我发现在这种情况下有134431个等级组合。但是我也想知道的是,说50-59(及格)或60-69(信用)的等级之间有多少组合。这就是我的困惑。
TL / DR:您在一门课程中可以得到多少个单独的分级评估组合?学期末成绩的范围是多少?
谢谢您的时间。
解决方法
继续您的想法,增加变量m
之后,您可以使用公式来计算组合的最终成绩,然后从该成绩中决定将该成绩通过小组或学分组。
例如我的
public static void main(String[] args) {
int m = 0;
int pass = 0;
int credit = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
for (int k = 0; k < 11; k++) {
for (int l = 0; l < 101; l++) {
m++;
float finalGrade = (float) (i * 0.1 + j * 0.15 + k * 0.15 + l * 0.6);
if (finalGrade >= 50 && finalGrade < 60) {
pass += 1;
} else if (finalGrade >= 60 && finalGrade < 70) {
credit += 1;
}
}
}
}
}
System.out.println(m);
System.out.println(pass);
System.out.println(credit);
//out: 134431
}