1,2,3,4,5,6共6个数, 组成一个没有重复数字的六位数,4不能在第二位,2和3不能邻接,请列出所有可能的组合....

package IQ;

import java.util.Set;
import java.util.TreeSet;

public class MyTest {
public static void main(String args[]) {
char[] number = new char[] { '1', '2', '2', '3', '4', '5' };
perm(number, 0, number.length - 1);
System.out.println(set.size());
int cols = 10;
for (String s : set) {
System.out.print(s + " ");
if (cols-- == 1) {
System.out.println();
cols = 10;
}
}
}
public static void addNumber(String str) {
set.add(str);
}
public static Set<String> set = new TreeSet<String>();
public static void perm(char[] n, int beg, int end) {
if (beg == end) {
String result = String.valueOf(n);
if (n[2] == '4')
return;
if (result.contains("35") || result.contains("53"))
return;
addNumber(String.valueOf(n));
return;
}
for (int i = beg; i <= end; ++i) {
swap(n, beg, i);
perm(n, beg + 1, end);
swap(n, beg, i);
}
}
public static int number = 0;
public static void swap(char[] n, int a, int b) {
char temp = n[a];
n[a] = n[b];
n[b] = temp;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题的答案是 120 个。 这意味着有 120 种方法可以将列表 [1, 2, 3, 4, 5] 中的数字组合成一个四位数,每个数字只能使用一次,并且四位数不能重复数字。 这可以通过枚举每一位的可能数字来计算。对于第一位,有五种选择(1、2、3、4、5);对于第二位,有四种选择(2、3、4、5),以此类推。因此,有 5 * 4 * 3 * 2 = 120 种可能。 ### 回答2: 给定列表[1, 2, 3, 4, 5],我们可以通过选择不同的数字排列来组成位数。由于这四个数字互不相同且无重复,那么我们在第一位有5个选择,在第二位有4个选择,在第三位有3个选择,在第四位有2个选择。根据乘法原理,我们可以计算出总有5 × 4 × 3 × 2 = 120 种不同的排列方式。所以,列表[1, 2, 3, 4, 5]可以组成互不相同且无重复数字的四位数有120个。 ### 回答3: 要组成位数,首位数字可以从列表中选取5个数字中的任意一个,即有5种选择。由于互不相同且无重复数字的要求,剩余三位数字就只能从剩下的4个数字中选取。因此,剩余三位数字的排列方式是4的阶乘,即4! = 4 x 3 x 2 x 1 = 24。 根据排列原理,首位数字的选择与剩余三位数字的排列方式是相互独立的,所以总的四位数的排列方式数量就等于首位数字的选择数量乘以剩余三位数字的排列方式数量,即5 x 24 = 120。 所以,列表[1, 2, 3, 4, 5]组成互不相同且无重复数字的四位数有120个。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值