习题2-6 排列(permutation)
用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要 求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必 太动脑筋。
今天无意间看见了书上的一道习题看了半天发现居然不会写,然后在网上找了许多资料,但是好多方法我看的不是太懂,后来自己静下心想到网上的一段话突然有了灵感,
九个数加起来是45,相乘是362880看似无用,实际上用处很大,我先把范围锁定,abc最小只能是123,最大就是987/3=329;然后每得到一个abc就算出来一个def和ghi;然后再判断是否符合条件,符合的就输出,不符合的就循环下一次的。下面看代码。
import java.util.Scanner;
/**
* @author 作者 E-mail: WYJ 1627407425@qq.com
* @version 创建时间:2019年5月6日 下午8:29:19
* 类说明
*/
public class 排列 {
public static void main(String[] args) {
int x1,y1,z1,x2,y2,z2,x3,y3,z3,j,k;
for(int i=123;i<=329;i++) {
x1 = i/100;
y1 = i%100/10;
z1 = i%100%10;
j = i*2;
x2 = j/100;
y2 = j%100/10;
z2 = j%100%10;
k = i*3;
x3 = k/100;
y3 = k%100/10;
z3 = k%100%10;
if(x1+x2+x3+y1+y2+y3+z1+z2+z3==45&&x1*x2*x3*y1*y2*y3*z1*z2*z3==362880) {
System.out.println(i+" "+j+" "+k);
}
}
}
}