一个有趣的程序---三色球问题

问题

一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配?

分析

根据问题描述可设任取的8个球中红球为m个,白球为n个,则黑球为8-m-n个。已知12个球中有3个红球,3个白球,6个黑球,因此,m的取值范围为[0, 3],n的取值范围因此为[0, 3],黑球的个数小于等于6,即 8 - m - n ≤ 6。

算法设计

循环结构检测 m、n 范围内的所有可能取值,再代入 8-m-n 中进行验证,能够满足条件 8 - m - n ≤ 6 的那些 m、n 和 8-m-n 的组合即为问题的解。

框图

这里写图片描述

程序

#include<stdio.h>
#include<windows.h>

int main()
{
    int m = 0;//红球数量
    int n = 0;//白球数量
    int number = 0;//可能性的次数
    printf("   红球 白球 黑球\n");
    printf("\n");
    for (m=0; m <= 3; m++)
    {
        for (n=0; n <= 3; n++)
        {
            if (8 - m - n <= 6)
            {
                printf("%2d:   %d   %d  %d\n", ++number, m, n, 8 - m - n);  
            }
        }
    }
    system("pause");
    return 0;
}

运行结果

这里写图片描述

猜你喜欢

转载自blog.csdn.net/mmwwxx123/article/details/79821388