zoukankan      html  css  js  c++  java
  • 寒假作业

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

    看看这个寒假作业:

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

    (如果显示不出来,可以参见【图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);
        }
    }
  • 相关阅读:
    SQL统计
    数据库中GETDATE()函数格式化时间
    C#中Math类的计算整数的三种方法
    Excel 导入到Datatable 中,再使用常规方法写入数据库
    C#实现二维码功能,winform 以及 asp.net均可以用
    JPEG、PNG、GIF三者的区别与联系
    javaScript基础知识--变量提升和闭包
    js基础
    js基础知识
    js基础知识
  • 原文地址:https://www.cnblogs.com/8023spz/p/10366039.html
Copyright © 2011-2022 走看看