新手必做的题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;

bool  judge( int  a,  int  b,  int  c,  int  d,  int  e);
void  show( int  a,  int  b,  int  c,  int  d,  int  e);

int  main()
{
    
int a , b, c, d, e;

    
for (int va = 0; va < 2++va)
    
{
        a 
= va;
        
for (int vb = 0; vb < 2++vb)
        
{
            b 
= vb;
            
for (int vc = 0; vc < 2++vc)
            
{
                c 
= vc;
                
for (int vd = 0; vd < 2++vd)
                
{
                    d 
= vd;
                    
for(int ve = 0; ve < 2++ve)
                    
{
                        e 
= ve;
                        
if (judge(a, b, c, d, e))
                            
goto END;

                    }

                }

            }

        }

    }


END:
    show(a, b, c, d, e);
    system(
"pause");
    
return 0;
}


bool  judge( int  a,  int  b,  int  c,  int  d,  int  e)
{    
    
if (a == 1  && b == 0)        // A参加时,B也参加
        return false;
    
    
if ( (b == 1 && c == 1|| (b == 0 && c == 0))    // B和C只有一个人参加
        return false;

    
if ( (c == 1 && d == 0|| (c == 0 && d == 1) )    // C和D或者都参加,或者都不参加
        return false;

    
if (d == 0 && e == 0)        // D和E中至少有一个人参加
        return false;
                                                    
// 如果E参加,那么A和D也都参加
    if (e == 1 && ((a == 0 && d == 1|| (a == 1 && d == 0|| (a == 0 && d == 0)))
        
return false;

    
return true;
}

void  show( int  a,  int  b,  int  c,  int  d,  int  e)
{
    cout 
<< "a = " << a << endl;
    cout 
<< "b = " << b << endl;
    cout 
<< "c = " << c << endl;
    cout 
<< "d = " << d << endl;
    cout 
<< "e = " << e << endl;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值