程序代码:
#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' );
}
}