Java: 算法 - 1,2,3,4 取3个数组成三位数字,求能排列组合数量,并将它们打印出来

博客探讨了如何计算从数字1,2,3,4中选取3个数字进行排列组合的方法。通过数学公式Anm=(n-m)!/n!和Cnm=m!(n-m)!/n!得出有24种排列。内容包括直接计算组合数量和使用穷举法实现打印所有组合的Java代码示例。" 131254823,11283024,MATLAB实现数字滤波器与均衡器设计教程,"['信号处理', 'MATLAB开发', '数字滤波', '滤波器设计']

涉及数学公式:

Anm=n!(n−m)!A^m_n=\frac{n!}{(n-m)!}Anm=(nm)!n! (n个数取m个排列组合) permutation and combination
Cnm=n!m!(n−m)!C^m_n=\frac{n!}{m!(n-m)!}Cnm=m!(nm)!n! (n个数取m个组合) combination

分析1,2,3,4取3个数字排列组合,应用数学公式A43=4!(4−3)!A^3_4 = \frac{4!}{(4-3)!}A43=(43)!4! = 24 种排列组合

1. 如果只求排列组合数量,可以直接使用数学公式

用代码表示:

public static long pnc(int n, int m){

	long numerator  = 1;
	for(;n>1;n--){
		numerator = numerator*n;
	}
	
	long denominator = 1;
	for(int i=n-m;i>1;i--){
		denominator = denominator*i;
	}
	
	return numerator/denominator;
}

测试:

public static void main(String args[]){
	System.out.println(pnc(4,3));
}

输出:

24

2. 打印的话,使用穷举法

代码:

public static void pnc(){
	long pnc = 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){
  					pnc++;
  					int num = i*100+j*10+k;
  					System.out.print(num + " "); 
  				}
  			}
  		}
  	}
	System.out.println("\n" + "Permutations and Combinations: "+ pnc ); 
}

if代码块可以用Stringbuffer写

if(i!=j && i!=k && j!=k){
	pnc++;
	StringBuffer num = new StringBuffer();
	num.append(i);
	num.append(j);
	num.append(k);
	num.append(" ");
	System.out.print(num);
}

测试:

public static void main(String args[]){
	pnc();
}

输出:

123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432
Permutations and Combinations: 24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值