youniankang@163.com
如果"且不同数字对应不同字母"这句话可以这么理解的话(a!=b!=c!=d!=e!=f!=g!=x!=y!=z)那么,f必为5或0而g必为0。则可以省去一些不步骤。
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
-----------------------------------------------------------------------------------------------------
我也来发表一下我的做法:
include <iostream>
using namespace std;
int main()
{
int part[2]={'不参加','参加'];//part[0]表示不参加,part[1]表示参加
for(int A=0;A<=1;A++)//A、B\C\D分别控制在1或0
for(int B=0;B<=1;B++)
for(int c=0;C<=1;C++)
for(int D=0;D<=1;D++)
if(A&&B==1)&&(B||C==1)&&(C&&D==1||C&&D==0)&&(D||E==1)&&(E&&A&&D==1)
{ cout<<part[A]<<" "<<part[b]<<" "<<part[C]<<" "<<part[D]<<endl;
}
return 0;
}
由于我是在网吧编的,没有编译环境,不知道语法对不对,如果有不明白的加我的QQ:12814441
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
--------------------------------------------------
我个人的做法,个人觉得这样做要简单一些,如果不懂的加我的QQ:12814441
#include <iostream>
using namespace std;
#include <string>
int main()
{
int a,b,c,d,e; //设置5个变量,分别表是不同的5个人
string f[2]={"不去","去"}; ///定义了一个字符串数组,f[1]={表示"不去"},f[2]={表示"去"}
for(a=0;a<=1;a++) /*a表示0,1;0表示不成立,就不去;1表示成立,就去*/
{for(b=0;b<=1;b++) /*b表示0,1;0表示不成立,就不去;1表示成立,就去*/
for(c=0;c<=1;c++) /*c表示0,1;0表示不成立,就不去;1表示成立,就去*/
{ if(b!=c) //a不能等c
for(d=0;d<=1;d++) /*d表示0,1;0表示不成立,就不去;1表示成立,就去*/
for(e=0;e<=1;e++) /*e表示0,1;0表示不成立,就不去;1表示成立,就去*/
{if(d!=e) //d不能等于e
if(e==1&&a&&b) /// 只有当e有成立时; a,b就必然成立
if((a&&b||!a)&&(b||c)&&(c&&d||!(c||d))&&(d||e)||(e&&a&&b)) /*根据条件进很逻辑判断*/
cout<<"A"<<f[a]<<" "<<"B"<<f[b]<<" "<<"C"<<f[c]<<" "<<"D"<<f[d]<<" "<<"E"<<f[e]<<" "<<endl;
} //if
} //if
} //for
return 0; //反回到主函数
}
[此贴子已经被作者于2007-7-29 14:03:20编辑过]
[此贴子已经被作者于2007-8-1 17:15:48编辑过]