满意答案
xu1844
2016.09.18
采纳率:50% 等级:12
已帮助:7335人
组合数学忘光了,想不起来公式了。用穷举法算:统计至少配成一双的取法数,然后除以总取法数。#include
int isPair(int i, int j, int k, int l);
int isPair(int a, int b);
int main() {
int SHOES_COUNT = 20; // 鞋子数
int i, j, k, l; // 取哪四只鞋
long total = 0; // 总取法数
long c = 0; // 至少能配成一双的取法数
// 鞋子编号 0,1,2,...,19
// 0,1,2,3为第1种鞋,4,5,6,7为第2种鞋,...,16,17,18,19为第5种鞋
// 偶数编号0,2,...,18为左脚,奇数编号1,3,...,19为右脚
// 如果4只鞋中有任意2只是同一种鞋并且分别为左右脚,则至少能配成一双
for (i = 0; i
for (j = 0; j
for (k = 0; k
for (l = 0; l
if (i != j && i != k && i != l && j != k && j != l && k != l) {
total++;
if (isPair(i, j, k, l)) {
c++;
}
}
}
}
}
}
printf("至少能配成一双的概率:%f\n", (double) c / total);
return 0;
}
int isPair(int i, int j, int k, int l) {
return isPair(i, j) || isPair(i, k) || isPair(i, l) || isPair(j, k)
|| isPair(j, l) || isPair(k, l);
}
int isPair(int a, int b) {
return (a / 4 == b / 4) && (a % 2 != b % 2) ? 1 : 0;
}追问: 谢了,可以运行吗
追答:可以运行。
追问: 还能帮个忙吗
追问: 问: [image]30 问: C语言大神来,52张扑克牌中任取四张可以算24点的概率。出去大小王,用程序编程做出来,C语言
00分享举报