本文為joshua317原創文章,轉載請注明:轉載自joshua317博客 https://www.joshua317.com/article/70
一、問題
三色球是一個排列組合問題,三色球問題的大意如下:一個黑盒中放着3個紅球、3個黃球和6個綠球,如果從其中取出8個球,那么取出的球中有多種顏色搭配呢?
二、分析
先來分析一下三色球問題。這是一個經典的排列組合問題,每種球的可能性如下:
取紅球可以有4種可能:0個、1個、2個、3個;
取黃球可以有4種可能:0個、1個、2個、3個;
取綠球可以有6種可能:2個、3個、4個、5個、6個;
只要在程序中窮舉每一種可能性,然后判斷是否滿足總共8個球
三、程序編寫
package com.joshua317;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int red, yellow, green, n;
System.out.println("三色球問題:");
ThreeBall threeBall = new ThreeBall();
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入紅球的數量:");
red = scanner.nextInt();
System.out.println("請輸入黃球的數量:");
yellow = scanner.nextInt();
System.out.println("請輸入綠球的數量:");
green = scanner.nextInt();
System.out.println("請輸入取出球的數量:");
n = scanner.nextInt();
threeBall.ThreeBall(red, yellow, green, n);
}
}
class ThreeBall {
public void ThreeBall(int red, int yellow, int green, int n)
{
System.out.println("三色球總共有如下可能的組合:");
System.out.println("\t紅球\t黃球\t綠球");
for (int i=0; i <=red; i++) {
for (int j=0; j<=yellow; j++) {
for (int k=0; k<=green; k++) {
if (i+j+k == n) {
System.out.printf("\t%d\t%d\t%d\n", i,j,k);
}
}
}
}
}
}
在該程序中,主方法首先輸入紅球的數量、黃球的數量、綠球的數量和取出球的數量。然后調用Threeball()方法來求解。
本文為joshua317原創文章,轉載請注明:轉載自joshua317博客 https://www.joshua317.com/article/70