• 寒假作业


    现在小学的数学题目也不是那么好玩的。

    看看这个寒假作业:

       □ + □ = □
       □ - □ = □
       □ × □ = □
       □ ÷ □ = □
    

    (如果显示不出来,可以参见【图1.jpg】)

    每个方块代表1~13中的某一个数字,但不能重复。

    比如:

     6  + 7 = 13
     9  - 8 = 1
     3  * 4 = 12
     10 / 2 = 5
    

    以及:

     7  + 6 = 13
     9  - 8 = 1
     3  * 4 = 12
     10 / 2 = 5
    

    就算两种解法。(加法,乘法交换律后算不同的方案)

    你一共找到了多少种方案?

    请填写表示方案数目的整数。

    注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

    答案 (8分)

    dfs+剪枝

    代码:

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    int s[12],c;
    bool vis[14];
    
    void dfs(int k) {
        if(k == 3 && s[0] + s[1] != s[2]) return;
        if(k == 6 && s[3] - s[4] != s[5]) return;
        if(k == 9 && s[6] * s[7] != s[8]) return;
        if(k >= 12) {
            if(s[9] % s[10] == 0 && s[9] / s[10] == s[11]) c ++;
            return;
        }
        for(int i = 1;i <= 13;i ++) {
            if(!vis[i]) {
                vis[i] = true;
                s[k] = i;
                dfs(k + 1);
                vis[i] = false;
            }
        }
    }
    int main() {
        dfs(0);
        printf("%d",c);
    }
    public class Main {
        private static int [] s = new int[13];
        private static int c = 0;
        private static boolean [] vis = new boolean[14];
        private static void dfs(int k) {
            if(k == 3 && s[0] + s[1] != s[2]) return;
            if(k == 6 && s[3] - s[4] != s[5]) return;
            if(k == 9 && s[6] * s[7] != s[8]) return;
            if(k == 12 && (s[9] % s[10] != 0 || s[9] / s[10] != s[11])) return;
            if(k == 12) {
                c ++;
                return;
            }
            for(int i = 1;i <= 13;i ++) {
                if(vis[i]) continue;
                vis[i] = true;
                s[k] = i;
                dfs(k + 1);
                vis[i] = false;
            }
        }
        public static void main(String[] args) {
            dfs(0);
            System.out.println(c);
        }
    }
  • 相关阅读:
    css 选择器
    IIS6、7添加反向代理的步骤
    使用脚本监控windows服务的方法
    ueditor编辑器插件 chrome中图片上传框延时问题
    Mysql隐式类型转换原则
    ASP.NET MVC 分页问题
    .NET程序集引用COM组件MSScriptControl所遇到的问题
    Makefile学习笔记
    操作系统的主要功能
    Linux基本命令之用户系统相关命令
  • 原文地址:https://www.cnblogs.com/8023spz/p/10366039.html
Copyright © 2020-2023  润新知