三位数相加得一数,求这三位数,不能重复不能相同,例如知道和为3 那么只能 0+1+2=3,不能出现 0+0+3=3, 0+2+1=3, 1+0+2=3,1+2+0=3, 例如和为4,只能是0+1+3, 和为5 只能0+1+4 ,0+2+3,其余不能 用java编程实现
------解决方案--------------------
是这样的。笨方法
int n = 5;
for (int x = 0; x < n; x++) {
for (int y = 0; y < n; y++) {
for (int z = 0; z < n; z++) {
if ((x < y && y < z) && (x + y + z == n)) {
System.out.println(x + "+" + y + "+" + z + "=" + n);
}
}
}
}
------解决方案--------------------
Z可以通过计算得出所以应该可以去掉,另外X Y的范围也可以优化,X应该最多取n/3-1,Y应该从X+1开始取值,最多取n/3
------解决方案--------------------
public static void main(String[] args)
{
int n = 10;
for (int x = 0; x < n - 2; x++)
{
for (int y = x+1; y < n - 1; y++)
{
for (int z = y+1; z < n; z++)
{
if (x + y + z == n)
{
System.out.println("x=" + x + " y=" + y + " z=" + z);
}
}
}
}
}
这个算法至少可以这样优化一下。虽然也很丑陋。