算法-經典趣題-三色球


一、問題

三色球是一個排列組合問題,三色球問題的大意如下:一個黑盒中放着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()方法來求解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM