题目 1518: [蓝桥杯][算法提高VIP]寻找三位数

题目描述

将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成
1:2:3的比例,试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。
输入
无输入文件
输出
输出每行有三个数,为满足题设三位数。各行为满足要求的不同解。
样例输入

样例输出

解题思路:

这道题也没啥思路的,就是一个全排列,全排列完以后将每三个合成一组去判断就好了。
全排列忘了可以看代码去回忆一下,直接看代码吧

代码如下:


public class Cyyw1518 {
	public static void main(String[] args) {
		int [] arr = {1,2,3,4,5,6,7,8,9};
		f(arr, 0, arr.length);
	}
	/**
	* 全排列
	*/
	public static void f(int [] arr,int k , int end) {
		if (k == end) {
			int y1,y2,y3;
			y1 = arr[0]*100+arr[1]*10+arr[2];
			y2 = arr[3]*100+arr[4]*10+arr[5];
			y3 = arr[6]*100+arr[7]*10+arr[8];
			if (y3 == 3 * y1 && y2 == 2 * y1) {
				System.out.println(y1+" "+ y2+" "+ y3);
			}
			return;
		}
		for (int i = k; i < end; i++) {
			int temp = arr[i];
			arr[i] = arr[k];
			arr[k] = temp;
			
			f(arr, k+1, end);
			
			temp = arr[i];
			arr[i] = arr[k];
			arr[k] = temp;
		}
	}
}

结果示例:

192 384 576
219 438 657
273 546 819
327 654 981
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值