标题:人员派遣问题
只看楼主
黑暗骑士5D
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2019-11-6
结帖率:100%
已结贴  问题点数:10 回复次数:1 
人员派遣问题
某任务需要在A,B,C,D,E五人中物色人员去完成,但派人受限于下列条件:

(1)若A去,则B跟去。

(2)D,E两人中必有人去。

(3)B,C两人中必有人去,但只去一人。

(4)C,D两个要么都去,要么都不去。

(5)若E去,则A,B都去。

问有几种派遣方案?用编程来解决这个问题。

输入格式:


输出格式:
以A,B,C,D,E代表每个人,输出满足问题要求的所有派遣组合,每行一个派遣。

输入样例:

输出样例:
1 : C D
2 : A B E


没做过这种题,思路是啥?
搜索更多相关主题的帖子: 格式 要求 输出 组合 输入 
2019-12-08 21:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned count = 0;
    for( unsigned i=0; i!=2*2*2*2*2; ++i )
    {
        unsigned a = (i>>0)&1;
        unsigned b = (i>>1)&1;
        unsigned c = (i>>2)&1;
        unsigned d = (i>>3)&1;
        unsigned e = (i>>4)&1;

        //(1)若A去,则B跟去。
        if( a > b )
            continue;

        //(2)D,E两人中必有人去。
        if( d+e == 0 )
            continue;

        //(3)B,C两人中必有人去,但只去一人。
        if( b+c != 1 )
            continue;

        //(4)C,D两个要么都去,要么都不去。
        if( c != d )
            continue;

        //(5)若E去,则A,B都去。
        if( e > a )
            continue;

        // 输出
        printf( "%u :", ++count );
        if( a ) printf( " A" );
        if( b ) printf( " B" );
        if( c ) printf( " C" );
        if( d ) printf( " D" );
        if( e ) printf( " E" );
        putchar( '\n' );
    }
}
2019-12-08 22:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498291-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017766 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved