本帖最后由 许晓华 于 2013-2-3 07:49 编辑
public class x
{
public static void f(int[] a, int n)
{
if(n==4)
{
if((a[0]<a[1])&&(a[0]<a[2])&&(a[2]<a[3])&&(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]==a[2]*a[2]*a[2]+a[3]*a[3]*a[3]))
System.out.printf("%d,%d,%d,%d\n",a[0],a[2],a[3],a[1]);
return;
}
for(int i=n; i<a.length; i++)
{
int t = a[n];a[n] = a;a = t;
f(a, n+1);
t = a[n];a[n] = a;a = t;
}
}
public static void main(String[] args)
{
int[] a = new int[30];
for(int i=0;i<30;i++) a=i+1;
f(a, 0);
}
}
楼主是搞软件大赛的?呵呵
这个题目的算法核心是求出N个数中选出M个的排列问题。
即从1~30的30个数中,选出4个来排列。
然后求满足要求的那些排列
用了递归算法。
结果有四种:
1,9,10,12
2,9,15,16
2,18,20,24
10,19,24,27
运行结果截图如下所示:
|
|