java能解决数学题目吗_把小学数学题用java语言解出来

[Java] 纯文本查看 复制代码import java.util.List;

import java.util.ArrayList;

/**

* □ + □ = □

* □ - □ = □

* □ * □ = □

* □ / □ = □

*

* 将 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13 填入上面方框,不能重复使用,使等式成立。

*

*

* @author 1234

*

*/

public class _dfs深搜01 {

static boolean[] flags = new boolean[14];

static boolean[] fuhao = new boolean[4]; // +-*/

static List> result = new ArrayList<>();

public static void dfs(ArrayList arr) {

if (arr.size() == 12) {

System.out.println("in " + arr);

List arr1 = new ArrayList<>();

arr1.addAll(arr);

result.add((ArrayList) arr1);

return;

}

for (int i = 1; i <= 13; i++) {

if (!flags[i] && i != 11) {

flags[i] = true;

for (int j = 1; j <= 13; j++) {

if (!flags[j] && i != 11) {

flags[j] = true;

if (!fuhao[0] && i + j <= 13&& !flags[i+j]) {

fuhao[0] = true;

flags[i+j] = true;

arr.add(i);

arr.add(j);

arr.add(i+j);

dfs(arr);

arr.remove(new Integer(i));

arr.remove(new Integer(j));

arr.remove(new Integer(i + j));

fuhao[0] = false;

flags[i+j] = false;

}

if (fuhao[0] && !fuhao[1] && i - j > 0 && !flags[i-j]) {

fuhao[1] = true;

flags[i-j] = true;

arr.add(i);

arr.add(j);

arr.add(i-j);

dfs(arr);

arr.remove(new Integer(i));

arr.remove(new Integer(j));

arr.remove(new Integer(i-j));

fuhao[1] = false;

flags[i-j] = false;

}

if (fuhao[0] && fuhao[1] && !fuhao[2] && i * j <= 13&& !flags[i*j]) {

fuhao[2] = true;

flags[i*j] = true;

arr.add(i);

arr.add(j);

arr.add(i*j);

dfs(arr);

arr.remove(new Integer(i));

arr.remove(new Integer(j));

arr.remove(new Integer(i*j));

fuhao[2] = false;

flags[i*j] = false;

}

if (fuhao[0] && fuhao[1] && fuhao[2] && !fuhao[3] && i / j > 0 && i % j == 0 && !flags[i/j]) {

fuhao[3] = true;

flags[i/j] = true;

arr.add(i);

arr.add(j);

arr.add(i/j);

dfs(arr);

arr.remove(new Integer(i));

arr.remove(new Integer(j));

arr.remove(new Integer(i/j));

fuhao[3] = false;

flags[i/j] = false;

}

flags[j] = false;

}

}

flags[i] = false;

}

}

return;

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

long startTime = System.currentTimeMillis();

dfs(new ArrayList());

System.out.println(result.size());

System.out.println(result);

System.out.println("共花时: " + (System.currentTimeMillis() - startTime) + " 毫秒");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值