由四种颜色组成的环,填到五个段组成的一个环上,使得各个环与相邻的颜色并不相同的组合能有多少种(全量)。



import java.util.Scanner;

public class 环形填颜色 {
    /*
    题目要求:
        由四种颜色组成的环,填到五个段组成的一个环上,使得各个环与相邻的颜色并不相同的组合能有多少种(全量)。
    * */
    public static void main(String[] args) {
        /*
        解析:N种颜色,M个段,求所有可能。
        假设M个段分别是A,B,C,D……Z 所有组合组合有多少种? ansA = N*(N-1)^(M-1)
        然后假设M-1个段 ZA,B,C,D ZA颜色相同的组合有多少种? ansB = N*(N-1)^(M-2)
        答案就为 ansA - ansB
        记得特殊值处理

        */
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();

        if (N == 1) {
            if (M > 1) {
                System.out.println(1);
                return;
            } else {
                System.out.println(0);
                return;
            }
        } else if (N == 2) {
            if (M == 1 || M == 2) {

                System.out.println(2);
                return;
            }
        }



        int ansA = N * (int)(Math.pow(N - 1, M - 1));
        int ansB = N * (int)(Math.pow(N - 1, M - 2));
        //System.out.println(ansA);
        //System.out.println(ansB);
        System.out.println(ansA - ansB);
    }
}

        由四种颜色组成的环,填到五个段组成的一个环上,使得各个环与相邻的颜色并不相同的组合能有多少种(全量)。

你可能感兴趣的:(Java,算法)