一個有趣的程式---三色球問題
阿新 • • 發佈:2019-01-02
問題
一個口袋中放有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;
}