谁能帮我用C++编写这么一个小程序
来源:百度知道 编辑:UC知道 时间:2024/06/24 13:17:39
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
竟然比我还快~像2楼说的,这个就是用位的方法啦
#include <iostream>
#include <cstdlib>
using namespace std;
#define NOTAKE 0
#define TAKE 1
/*每个队员用一个位来表示,从高位到低位分别为EDBCA
相应位为1表示参赛,为0表示不参赛*/
#define A (players & 0x01)
#define B ((players & 0x02)>>1)
#define C ((players & 0x04)>>2)
#define D ((players & 0x08)>>3)
#define E ((players & 0x10)>>4)
int players;
bool check() {
if (((A == TAKE)? B == TAKE: true) /* A参加时,B也参加; */
&& (B != C) /*B和C只有一个人参加; */
&& (C == D) /*C和D或者都参加,或者都不参加;*/
&& (D == TAKE || E == TAKE) /*D和E中至少有一个人参加;*/
&& (E == TAKE? (A == TAKE && D == TAKE): true)) /*如果E参加,那么A和D也都参加。*/ {
return true;
}
return false;
}
int main(int argc, char *argv[])
{
int i;
for (players = 0; players < 32; players++){