import java.util.*;
class 破碎的砝码3
{
static TreeSet<Integer> ts;
public static void main(String[] args)
{
for (int i = 1; i <= 40; i++)
for (int j = i + 1; j <= 40 - i; j++)
for (int k = j + 1; k <= 40 - j - i; k++)
for (int l = k + 1; l <= 40- k - j - i; l++)
{
if(i+j+k+l==40)
if(fama(i,j,k,l))
{
System.out.println("找到破碎的砝码\n"+i+"...."+j+"...."+k+"...."+l);
}
}
}
public static boolean fama(int i,int j,int k,int l)
{
int[] suipian=new int[]{i,j,k,l};
int sum=0;
int ii=0;
ts=new TreeSet<Integer>();
fuhe(ii,sum,suipian);
if(ts.size()==41)
return true;
return false;
}
public static void fuhe(int i,int sum,int[] suipian)
{
if(i==4)
{
int p=sum>0?sum:-sum;
ts.add(p);
return;
}
int temp=i;
i++;
fuhe(i,sum,suipian);
fuhe(i,sum+suipian[temp],suipian);
fuhe(i,sum-suipian[temp],suipian);
}
}
java深度搜索解决破碎的砝码
最新推荐文章于 2024-06-19 12:00:39 发布
本文介绍了一个使用Java实现的算法,该算法旨在找出四个整数(作为砝码重量),它们的总和为40,并且这四个整数可以组合出0到40之间的所有整数重量。通过四层循环遍历可能的砝码组合,并使用递归函数计算这些砝码所能形成的重量集合。
摘要由CSDN通过智能技术生成