给定数字2,,4,5,7,9,请对这些数字排序,使任意连续3个数字的和能整除3。最好用java实现,谢谢大家了!
最后的排序应该是5,7,9,2,4这样。
------解决方案--------------------
public class Test
{
public static void main(String[] args)
{
int[] arr = {2, 4, 5, 7, 9};
sort(arr, 0, arr.length);
}
public static void sort(int[] arr, int start, int end)
{
if (start == end)
{
int flag = 0;
for (int i = 0; i < arr.length - 2; i++)
{
if ((arr[i] + arr[i + 1] + arr[i + 2]) % 3 == 0)
{
flag++;
}
else
{
flag--;
}
}
if (flag == 3)
{
System.out.println("" + arr[0] + arr[1] + arr[2] + arr[3]
+ arr[4]);
}
}
else
{
for (int i = start; i < end; i++)
{
int temp = arr[start];
arr[start] = arr[i];
arr[i] = temp;
sort(arr, start + 1, end);
arr[i] = arr[start];
arr[start] = temp;
}
}
}
}
输出结果是:
24957
27954
42975
45972
54927
57924
75942
72945
感觉应该有更好的算法。第一个定了其实有用结果只能有四种情况。只需要考虑第二个,第二个确定了结果就确定了。最后三个不用考虑。楼主可以参考下这个思路写个更好的算法。