钱能 C++程序设计教程第四章关于位操作实例的程序解答问题 (求助)
题目为:
某任务需要在A、B、C、D、E这一人中物色人员去完成,但派人受限于下列条件:(1)若A去,则B跟去 (2)D,E两人中必有人去 (3)B,C两人中必有人去,但只去一人 (4)C,D两人要么都去,要么都不去 (5)若E去,则A,B都去
问,如何用程序写出最后的决定?
程序如下:
#include <ipstream>
using namespace std;
//我在这省略了打印的部分,只写出其中主要部分:、
void main()
{
for(int I=0;I <32;I++)
{
if(I> > 4 && !((I&8)> > 3)) continue; //
if(!((I&4)> > 2 && ! (I&1)) continue; //请问这四句
if(((I&8)> > 3) == ((I&4)> > 2)) continue; //的具体含义
if((I&1) && !((I> > 4) && ((I&8)> > 3))) continue; //是什么?
print(I); //这是打印函数
}
}
[解决办法]
觉得程序好像有点问题。。。。。
I> > 4代表bit(A)=0?1;
I&8> > 3代表bit(B)=0?1;
I&4> > 2代表bit(C)=0?1;
I&1代表bit(E)=0?1;
if(I> > 4 && !((I&8)> > 3)) continue; ---〉若A去,若B不去,则否决此方案
if(!((I&4)> > 2 && ! (I&1)) continue;---〉若C也不去,E也不去,则否决此方案
if(((I&8)> > 3) == ((I&4)> > 2)) continue; 若BC都去或者都不去则否决此方案
if((I&1) && !((I> > 4) && ((I&8)> > 3))) continue; 若E去,但不是AB都去则否决此方案