从M个数中随机选出N个数的所有组合,有序,(二)

这就是数学中的

A m

n

的选取。

共有 m!/n!种可能。。

同样举一个例子吧。。

从12345这五个数字中随机选取3个数字,要求选出来的这三个数字是有序,也就是说从12345中选出来的是123这三个数的话,那么就有

123,132,312,321,213,231

这六种可能。。

好了。废话不多说了,上程序,解释写在城市的注释里。

//A53
//排序,12345找出所有的排序组合
public class Test7 {
	
	static char[] ch;
	static String str="";
	//选取的数字的个数
	static int len=3;
	
	public static void main(String[] args) {
		String str="12345";
		char[] c = str.toCharArray();
		ch=c;
		show(c, 0, c.length);
	}
	
	public static void show(char[] c,int start,int end){
		if((start+c.length-len)==end){
			for(int i=0;i<len;i++){
				System.out.print(c[i]);
			}
			System.out.println();
		}else{
			for(int i=start;i<c.length;i++){
				//每个数都与第一个数进行交换位置
				char temp=c[start];
				c[start]=c[i];
				c[i]=temp;
				//从start+1个数开始下一轮遍历
				show(c, start+1, end);
				
				//交换完位置遍历之后返回原有位置
				temp=c[start];
				c[start]=c[i];
				c[i]=temp;
			}
		}
	}
}
连接: 从M个数中随机选出N个数的所有组合,无序,(一)



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值