题目:
题目描述
把 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;
}
}