算法:求这一数学题的解!

「已注销」 「已注销」 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
今天中午在公司群,看到他们讨论一数学题目,自己也试着写了求解。貌似这道题没有解么?有没有解不重要,重要的是,怎么样算才最合算?我就直接来一穷举,一一试探。貌似1到8没有解,如果数字可以给1到9的话,倒是有很多组解!


public class Main {

public static void main(String[] args) {
int[] numbers = new int[8];

//爆破开始
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
for(int k = 1; k <= 9; k++) {
for(int l = 1; l <= 9; l++) {
for(int m = 1; m <= 9; m++) {
for(int n = 1; n <= 9; n++) {
for(int p = 1; p <= 9; p++) {
for(int q = 1; q <= 9; q++) {
numbers[0] = i;
numbers[1] = j;
numbers[2] = k;
numbers[3] = l;
numbers[4] = m;
numbers[5] = n;
numbers[6] = p;
numbers[7] = q;

if(validate(numbers)) {
System.out.println(i + " + " + j +" = 9");
System.out.println(k + " - " + l + " = 1");
System.out.println(m + " + " + n + " = 7");
System.out.println(p + " - " + q + " = 2");
System.out.println("-------------------------");
}
}
}
}
}
}
}
}
}
}

private static boolean validate(int[] nums) {
//if是为了判断数值是否满足四个表达式
if( (nums[0] + nums[1] == 9) &&
(nums[2] - nums[3] == 1) &&
(nums[4] + nums[5] == 7) &&
(nums[6] - nums[7] == 2) ) {

//这个循环是为了判断是否有重复数字出现,查找算法
for(int i = 0; i < nums.length; i++) {
for(int j = i+1; j < nums.length; j++) {
if(nums[i] == nums[j]) {
return false;
}
}
}
return true;
}

return false;
}

}

穷举是无奈的办法了,所以想到csdn大神,给个另外的思路。当然算法与语言无关,但是csdn不能将同一问题发到不同板块。所以就选择java板块来发这个问题吧!
...全文
评论 21
收藏 已收藏
分享
返回顶部
「已注销」
「已注销」 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
Java SE 62,620 成员 307,251 内容