这篇文章讲述的是算法初级部分的三色球问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。
问题描述
一个口袋放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任意取8个,问一共有多少种可能的颜色搭配?
算法分析
这是一个穷举法的例子假设任取的8个球中红球个数为red个,白球个数white个,则黑球个数black=8-red-white个,取值范围为:
red:0~3
white:0~3
black<=6
代码实现
package mathematics;
public class Q4_ThreeColorBalls {
/**
* 问题分析:一个口袋放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任意
* 取8个,问一共有多少种可能的颜色搭配?
*
* 算法分析:又是一个穷举法的例子假设任取的8个球中红球个数为red个,白球个数white个,
* 则黑球个数black=8-red-white个,取值范围为:
* red:0~3
* white:0~3
* black<=6
*
*/
public static void main(String[] args) {
int red , white , black ;
for(red=0 ; red<=3 ; red++) //红球:0~3
for(white=0 ; white<=3 ; white++){ //白球:0~3
black = 8-red-white ; //黑球小于等于6
if(black <= 6){
System.out.println("红球:"+red+" 个,白球"+white+"个,黑球:"+black+"个");
}
}
}
}
样例输出
红球:0 个,白球2个,黑球:6个
红球:0 个,白球3个,黑球:5个
红球:1 个,白球1个,黑球:6个
红球:1 个,白球2个,黑球:5个
红球:1 个,白球3个,黑球:4个
红球:2 个,白球0个,黑球:6个
红球:2 个,白球1个,黑球:5个
红球:2 个,白球2个,黑球:4个
红球:2 个,白球3个,黑球:3个
红球:3 个,白球0个,黑球:5个
红球:3 个,白球1个,黑球:4个
红球:3 个,白球2个,黑球:3个
红球:3 个,白球3个,黑球:2个