使用5.6.7.8.9
组成一个三位数和一个两位数,并从这样的数中找到两数乘积最大的这个数
要求:
这五个数组成一个各位都不相同的三位数,和一个各位也不相同的两位数,
并且两位数中的任何一位不能和前面的三位数任何一位都相同
使用5.6.7.8.9
组成一个三位数和一个两位数,并从这样的数中找到两数乘积最大的这个数
要求:
这五个数组成一个各位都不相同的三位数,和一个各位也不相同的两位数,
并且两位数中的任何一位不能和前面的三位数任何一位都相同
public class Calculator { private int biggest; private int num1; private int num2;
public static void main(String[] args) { int[] num = { 5, 6, 7, 8, 9 }; Calculator cal = new Calculator(); cal.getBig(num, 0, 4); System.out.println(cal.num1 + "*" + cal.num2 + "=" + cal.biggest); }
private void getBig(int[] num, int low, int high) { if (low == high) { int firstNum = num[0] * 100 + num[1] * 10 + num[2]; int secondNum = num[3] * 10 + num[4]; if (firstNum * secondNum > biggest) { num1 = firstNum; num2 = secondNum; biggest = firstNum * secondNum; } } else { for (int i = low; i <= high; i++) { int tem = num[i]; num[i] = num[low]; num[low] = tem; getBig(num, low + 1, high); tem = num[i]; num[i] = num[low]; num[low] = tem; }
} } }
运行结果:
875*96=84000
我觉得楼上的太慢了,只要把5个数组合下,2个数组保存,一个是3个的组合,一个是2个的组合,然后排序找到2个数组中的2个最大数.
把这五个数放到数组里或集合里,使用循环找到他们所有的组合并转化成整数,并计算他们的乘积,找到最大的即可