首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大家来看看有没有更好的算法解决办法

2012-02-17 
大家来看看有没有更好的算法/*2.A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞

大家来看看有没有更好的算法
/*
    2.   A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
    人参加了竞赛:

      (1)A参加时,B也参加;

      (2)B和C只有一个人参加;

      (3)C和D或者都参加,或者都不参加;

      (4)D和E中至少有一个人参加;

      (5)如果E参加,那么A和D也都参加。
*/

#include   <iostream.h>

void   main()
{
int   A,B,C,D,E;//分别代表5个人,0表示未参加,1表示参加
for(A=0;A <=1;A++)
for(B=0;B <=1;B++)
{
if(A==1&&B==0)//对应 "A参加时,B也参加 "的否命题
continue;
for(C=0;C <=1;C++)
{
if(B==1&&C==1||B==0&&C==0)//对应 "B和C只有一个人参加 "的否命题
continue;
for(D=0;D <=1;D++)
{
if(C==0&&D==1||C==1&&D==0)//对应 "C和D或者都参加,或者都不参加 "的否命题
continue;
for(E=0;E <=1;E++)
{
if(D==0&&E==0)//对应 "D和E中至少有一个人参加 "的否命题
continue;
if(E==1&&A==0||D==0)//对应 "如果E参加,那么A和D也都参加 "的否命题
continue;
cout < <A < <B < <C < <D < <E < <endl;
}
}
}
}
}

[解决办法]
用stl的next_permutation
[解决办法]
感觉这类命题如果不用程序,人为推算,结果好象就那么多
如:如果A参加,则必然
A-》B-》D-》E

另外效率也没什么好追求的

热点排行