最大乘积java

题目:
题目描述
把 1~9 这9个数字分成两组,中间插入乘号,
有的时候,它们的乘积也只包含1~9这9个数字,而且每个数字只出现1次。
比如:
984672 * 351 = 345619872
98751 * 3462 = 341875962
9 * 87146325 = 784316925

符合这种规律的算式还有很多,请你计算在所有这些算式中,乘积最大是多少?
输出
输出一个整数表示答案

思路:暴力就完事了(笑)

package 历届;

import java.util.HashMap;
import java.util.Map;

public class test {

	public static int max = Integer.MIN_VALUE;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int a1=1;a1<=9;a1++)
			for(int a2=1;a2<=9;a2++)
			{
				if(a1==a2)
					continue;
				for(int a3=1;a3<=9;a3++)
				{
					if(a1==a3 || a2==a3)
						continue;
					for(int a4=1;a4<=9;a4++)
						for(int a5=1;a5<=9;a5++)
							for(int a6=1;a6<=9;a6++)
								for(int a7=1;a7<=9;a7++)
									for(int a8=1;a8<=9;a8++)
										for(int a9=1;a9<=9;a9++)
										{
											if(a1!=a2&&a1!=a3&&a1!=a4&&a1!=a5&&a1!=a6&&a1!=a7&&a1!=a8&&a1!=a9
											&&a2!=a3&&a2!=a4&&a2!=a5&&a2!=a6&&a2!=a7&&a2!=a8&&a2!=a9
											&&a3!=a4&&a3!=a5&&a3!=a6&&a3!=a7&&a3!=a8&&a3!=a9
											&&a4!=a5&&a4!=a6&&a4!=a7&&a4!=a8&&a4!=a9
											&&a5!=a6&&a5!=a7&&a5!=a8&&a5!=a9
											&&a6!=a7&&a6!=a8&&a6!=a9
											&&a7!=a8&&a7!=a9
											&&a8!=a9)
											{
												f(a1,a2,a3,a4,a5,a6,a7,a8,a9);
											}
												
										}
				}
			}
		System.out.println(max);
	}
	public static void f(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9)
	{
		int mark = 0;
		//1
		//String str = String.valueOf(a1)+a2+a3+a4+a5+a6+a7+a8+a9;
		mark = a1 * Integer.valueOf(  String.valueOf(a2)+a3+a4+a5+a6+a7+a8+a9       );
		if(judge(mark))
			mark = Math.max(max, a1 * Integer.valueOf(  String.valueOf(a2)+a3+a4+a5+a6+a7+a8+a9       ));
		//2
		mark = (a1*10+a2) *  (Integer.valueOf(  String.valueOf(a3)+a4+a5+a6+a7+a8+a9       ));
		if(judge(mark))
			max = Math.max(max, (a1*10+a2) *  (Integer.valueOf(  String.valueOf(a3)+a4+a5+a6+a7+a8+a9       ))    );
		//3
		mark =(Integer.valueOf(  String.valueOf(a1)+a2+a3  )) *  (Integer.valueOf(  String.valueOf(a4)+a5+a6+a7+a8+a9       ))  ;
		if(judge(mark))
			max = Math.max(max, (Integer.valueOf(  String.valueOf(a1)+a2+a3  )) *  (Integer.valueOf(  String.valueOf(a4)+a5+a6+a7+a8+a9       ))    );
		//4
		mark =(Integer.valueOf(  String.valueOf(a1)+a2+a3+a4  )) *  (Integer.valueOf(  String.valueOf(a5)+a6+a7+a8+a9       ))  ;
		if(judge(mark))
			max = Math.max(max, (Integer.valueOf(  String.valueOf(a1)+a2+a3+a4  )) *  (Integer.valueOf(  String.valueOf(a5)+a6+a7+a8+a9       ))    );
		//5
		mark =(Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5  )) *  (Integer.valueOf(  String.valueOf(a6)+a7+a8+a9       )) ;
		if(judge(mark))
			max = Math.max(max, (Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5  )) *  (Integer.valueOf(  String.valueOf(a6)+a7+a8+a9       ))    );
		//6
		mark =(Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5+a6  )) *  (Integer.valueOf(  String.valueOf(a7)+a8+a9       ))  ;
		if(judge(mark))
			max = Math.max(max, (Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5+a6  )) *  (Integer.valueOf(  String.valueOf(a7)+a8+a9       ))    );
		//7
		mark =(Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5+a6+a7  )) *  (Integer.valueOf(  String.valueOf(a8)+a9       )) ;
		if(judge(mark))
			max = Math.max(max, (Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5+a6+a7  )) *  (Integer.valueOf(  String.valueOf(a8)+a9       ))    );
		
		//8
		mark =(Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5+a6+a7+a8  )) *  (Integer.valueOf(  String.valueOf(a9)      )) ;
		if(judge(mark))
			max = Math.max(max, (Integer.valueOf(  String.valueOf(a1)+a2+a3+a4+a5+a6+a7+a8  )) *  (Integer.valueOf(  String.valueOf(a9)      ))    );
		
		
	}
	public static boolean judge(int n)
	{
		String str = String.valueOf(n);
		if(str.length()!=9)
			return false;
		for(int i=1;i<=9;i++)
		{
			if(str.indexOf(i+"")==-1)
				return false;
		}
		return true;
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值