您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页寒假作业 蓝桥杯

寒假作业 蓝桥杯

来源:飒榕旅游知识分享网

 

现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:

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

   (如果显示不出来,可以参见【图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

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

 

代码:

#include <iostream>
#include <string>

using namespace std;
int map[4][3];
bool visit[14];
int sum=0;

bool check(int x,int y,int val){
    if(y==2){
        if(x==0)return (map[x][0]+map[x][1]==val);
        else if(x==1)return (map[x][0]-map[x][1]==val);
        else if(x==2)return (map[x][0]*map[x][1]==val);
        else if(x==3)return (val * map[x][1] == map[x][0]);//如果此处用除法,除不尽的情况下会把浮点数强制转化为整形,出现错误。
        else return false;
    }
    else return true;

}

void dfs(int x,int y){
    if(x==4) {
        sum++;
        return;
    }

    for(int i=1;i<=13;i++){
        if(!visit[i] && check(x,y,i)){
            visit[i]=true;

                map[x][y]=i;
                dfs(x+(y+1)/3,(y+1)%3);

            visit[i]=false;
        }
    }

}


int main(){
    for(int i=1;i<14;i++)
        visit[i]=false;
    dfs(0,0);
    cout<<sum;
    return 0;
}
 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务