口袋中有红、黄、蓝、白、黑五种颜色的球若干,每次从口袋中取出3个球。问得到三种不同颜色的球可以选取的方法,打印出三种颜色的各种组合
(用C语言)编写
第1个回答 2009-07-03
利用二进制好了
#include <stdio.h>
int main(void)
{
char color[5][8] = {{"red"},{"yellow"},{"blue"},{"white"},{"black"}};
int i, j, k;
int count;
int n = 0;
for (i = 7; i <= 28; i++)
{
count = 0;
if ((i & 1) == 1)
count++;
if ((i & 2) == 2)
count++;
if ((i & 4) == 4)
count++;
if ((i & 8) == 8)
count++;
if ((i & 16) == 16)
count++;
if (count == 3)
{
j = i;
k = 0;
while (j > 0)
{
if ((j & 1) == 1)
printf("%s ", color[k]);
j >>= 1;
k++;
}
printf("\n");
n++;
}
}
printf("\n%d", n);
}
red yellow blue
red yellow white
red blue white
yellow blue white
red yellow black
red blue black
yellow blue black
red white black
yellow white black
blue white black
10
#include <stdio.h>
int main(void)
{
char color[5][8] = {{"red"},{"yellow"},{"blue"},{"white"},{"black"}};
int i, j, k;
int count;
int n = 0;
for (i = 7; i <= 28; i++)
{
count = 0;
if ((i & 1) == 1)
count++;
if ((i & 2) == 2)
count++;
if ((i & 4) == 4)
count++;
if ((i & 8) == 8)
count++;
if ((i & 16) == 16)
count++;
if (count == 3)
{
j = i;
k = 0;
while (j > 0)
{
if ((j & 1) == 1)
printf("%s ", color[k]);
j >>= 1;
k++;
}
printf("\n");
n++;
}
}
printf("\n%d", n);
}
red yellow blue
red yellow white
red blue white
yellow blue white
red yellow black
red blue black
yellow blue black
red white black
yellow white black
blue white black
10