有人在赛前预测A、B、C、D、E、F六名选手在比赛中会按顺序分别获得第一名到第六名,但是这一预测值猜对了三人的名次。则这最后的结果有哪几种可能?
六个猜测用表达式表示为:(a==1)+(b==2)+(c==3)+(d==4)+(e==5)+(f==6) = 3 , 则我们可以分别另每一项(x==m)为Ai (1<=i<=6),则 Ai 只有0或者1两种取值,那么我们就可以用如下程序穷举出所有的可能结果。
#include "stdio.h" #include "stdlib.h" #define Max 2 // 指出 a b c d e f 的可能情况数目 int main(int argc,char *argv[]) { // a b c d e f 分贝意味着各自取得相应名次的可能性,即 0 或者 1 int a = 0 , b = 0, c = 0, d = 0, e = 0 ,f = 0; int num = 0 ; // 用来记录所有可能出现的结果数目 // 穷举 a b c d e f 的可能性,每一个都有两种可能,则进行 2 的 6 次放穷举 for( a |