
在编程中,组合与排列问题是一类常见的算法题。今天我们将通过一个具体的例子来探讨如何使用Java语言解决这类问题。具体问题是:给定四个数字1、2、3、4,可以组成多少个互不相同且无重复数字的三位数?这些三位数分别是什么?
首先,我们需要明确几个关键点:
根据以上条件,我们可以得出每个位置(百位、十位、个位)都有4种选择,但因为不能重复使用数字,所以实际上第一个位置有4种选择,第二个位置有3种选择,第三个位置有2种选择。因此,总的组合数为 \(4 \times 3 \times 2 = 24\) 种。
接下来,我们使用Java编写代码来实现这个问题的解决方案。我们将通过三层循环来遍历所有可能的组合,并检查是否有重复的数字。
public class UniqueThreeDigitNumbers {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 4; i++) { // 百位
for (int j = 1; j <= 4; j++) { // 十位
for (int k = 1; k <= 4; k++) { // 个位
if (i != j && i != k && j != k) {
System.out.println(i * 100 + j * 10 + k);
count++;
}
}
}
}
System.out.println("总共可以组成 " + count + " 个不同的三位数");
}
}
代码解析
if (i != j && i != k && j != k) 确保三个位置上的数字互不相同。System.out.println(i * 100 + j * 10 + k); 输出符合条件的三位数。count++ 来统计符合条件的三位数的数量。
运行上述代码,输出结果如下:
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
总共可以组成 24 个不同的三位数下面是一个使用Java编写的示例代码,该代码能够计算并打印出由1、2、3、4这四个数字组成的互不相同且无重复数字的三位数。
public class UniqueThreeDigitNumbers {
public static void main(String[] args) {
int count = 0;
// 数字数组
int[] digits = {1, 2, 3, 4};
// 使用三重循环来生成所有可能的三位数
for (int i = 0; i < digits.length; i++) {
for (int j = 0; j < digits.length; j++) {
for (int k = 0; k < digits.length; k++) {
// 确保三个数字各不相同
if (i != j && j != k && i != k) {
System.out.println(digits[i] * 100 + digits[j] * 10 + digits[k]);
count++;
}
}
}
}
// 打印总共的三位数数量
System.out.println("Total number of unique three-digit numbers: " + count);
}
}int[] digits = {1, 2, 3, 4}; 这里定义了一个包含1、2、3、4的数组。if (i != j && j != k && i != k) 来确保三个位置上的数字各不相同。count 增加1。运行上述代码后,你将看到所有由1、2、3、4组成的互不相同且无重复数字的三位数,以及这些数的总数量。
这个问题可以通过编程来解决,具体来说,可以使用Java语言通过循环和条件判断来实现。下面是一个简单的Java程序,用于找出由1、2、3、4这四个数字组成的互不相同且无重复数字的所有三位数,并统计这些数字的数量。
public class UniqueThreeDigitNumbers {
public static void main(String[] args) {
int count = 0; // 用来计数符合条件的三位数的数量
System.out.println("所有可能的三位数是:");
for (int i = 1; i <= 4; i++) { // 百位
for (int j = 1; j <= 4; j++) { // 十位
for (int k = 1; k <= 4; k++) { // 个位
if (i != j && i != k && j != k) { // 确保三个数字互不相同
System.out.println(i * 100 + j * 10 + k); // 输出三位数
count++; // 计数器加1
}
}
}
}
System.out.println("总共有 " + count + " 个不同的三位数。");
}
}count 变量用于记录满足条件的三位数的数量。for循环分别控制百位、十位和个位上的数字选择。i)从1到4,代表百位上的数字。j)从1到4,代表十位上的数字。k)从1到4,代表个位上的数字。if (i != j && i != k && j != k)确保三个位置上的数字互不相同。这是关键的条件判断,用于排除掉任何含有重复数字的情况。System.out.println(i * 100 + j * 10 + k);将其打印出来。count计数器加1。这个程序简单直观,利用了基本的循环和条件语句,非常适合初学者理解和学习。希望这对你有所帮助!如果有任何疑问或需要进一步的解释,请随时提问。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。