当前位置:首页 > 后端开发 > 正文

Java如何计算三位数排列组合

计算三位数的组合:无重复数字时,首位从1-9选(9种),第二位从0-9排除首位(9种),第三位排除前两位(8种),总计9×9×8=648种组合。

无重复数字的三位数组合

指百位、十位、个位上的数字均不重复(如123、907),且百位不能为0。
数学原理

  • 百位可选范围:1-9(9种)
  • 十位可选范围:0-9(排除百位已选数字,9种)
  • 个位可选范围:0-9(排除百位和十位已选数字,8种)
    总组合数 = 9 × 9 × 8 = 648

Java代码实现

import java.util.ArrayList;
import java.util.List;
public class ThreeDigitCombinations {
    public static void main(String[] args) {
        List<Integer> combinations = new ArrayList<>();
        // 百位:1-9
        for (int i = 1; i <= 9; i++) {
            // 十位:0-9(排除百位)
            for (int j = 0; j <= 9; j++) {
                if (j == i) continue; // 跳过重复
                // 个位:0-9(排除百位和十位)
                for (int k = 0; k <= 9; k++) {
                    if (k == i || k == j) continue;
                    int number = i * 100 + j * 10 + k;
                    combinations.add(number);
                }
            }
        }
        // 输出结果
        System.out.println("无重复数字的三位数总数: " + combinations.size());
        System.out.println("前10个示例: " + combinations.subList(0, 10));
    }
}

输出

Java如何计算三位数排列组合  第1张

无重复数字的三位数总数: 648
前10个示例: [102, 103, 104, 105, 106, 107, 108, 109, 120, 123]

有重复数字的三位数组合

指允许数字重复(如112、200),但百位不能为0。
数学原理

  • 百位可选范围:1-9(9种)
  • 十位可选范围:0-9(10种)
  • 个位可选范围:0-9(10种)
    总组合数 = 9 × 10 × 10 = 900(即所有100-999的三位数)。

Java代码实现

import java.util.ArrayList;
import java.util.List;
public class ThreeDigitCombinations {
    public static void main(String[] args) {
        List<Integer> combinations = new ArrayList<>();
        // 百位:1-9
        for (int i = 1; i <= 9; i++) {
            // 十位:0-9(允许重复)
            for (int j = 0; j <= 9; j++) {
                // 个位:0-9(允许重复)
                for (int k = 0; k <= 9; k++) {
                    int number = i * 100 + j * 10 + k;
                    combinations.add(number);
                }
            }
        }
        // 输出结果
        System.out.println("有重复数字的三位数总数: " + combinations.size());
        System.out.println("前10个示例: " + combinations.subList(0, 10));
    }
}

输出

有重复数字的三位数总数: 900
前10个示例: [100, 101, 102, 103, 104, 105, 106, 107, 108, 109]

关键说明

  • 百位不为0:三位数的百位必须是1-9,否则不是有效三位数。
  • 组合与排列:数学中“组合”指无序选择(如C(10,3)=120),但本文针对实际需求(生成具体三位数),使用有序排列实现。
  • 性能优化:直接使用三重循环(时间复杂度O(n³))在本题中可行(仅900次迭代),无需递归或复杂算法。

通过以上代码,可灵活生成无重复或有重复数字的三位数组合,适用于密码生成、数学计算等场景。


引用说明
本文代码基于Java基础语法实现,数学原理参考组合数学中的排列概念。

0