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

钱能 C++程序设计教程第四章关于位操作实例的程序解答有关问题 ()

2012-03-17 
钱能 C++程序设计教程第四章关于位操作实例的程序解答问题 (求助)题目为:某任务需要在A、B、C、D、E这一人中物

钱能 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都去则否决此方案

热点排行