第七届蓝桥杯 寒假作业

2018-01-27 19:12:50来源:cnblogs.com作者:执手暮归年人点击

分享

转载请注明出处:http://www.cnblogs.com/zhishoumuguinian/p/8365430.html
寒假作业

现在小学的数学题目也不是那么好玩的。看看这个寒假作业,每个方块代表1~13中的某一个数字,但不能重复。

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

比如:            以及:
6 + 7 = 13          7 + 6 = 13
9 - 8 = 1           9 - 8 = 1
3 * 4 = 12          3 * 4 = 12
10 / 2 = 5          10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)你一共找到了多少种方案?请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

这个代码没有注释,但是思路和上一篇一样,想要了解思路可以研究一下这个代码,也可以看一下我的上一篇随笔《第七届蓝桥杯  方格填数》。接下来粘上代码。

 1 #include <iostream> 2 #include <algorithm> 3 #include <math.h> 4  5 using namespace std; 6 int a[4][4], flag[14]={0}; 7 int ans=0; 8  9 bool Check(int x, int y, int i)10 {11     if(y==0)  return true;12     int tem;13     switch(x)14     {15         case 0:16             tem=a[x][y]+a[x][y-1];17             break;18         case 1:19             tem=a[x][y]-a[x][y-1];20             break;21         case 2:22             tem=a[x][y]*a[x][y-1];23             break;24         case 3:25             if(a[x][y-1]%a[x][y]!=0)26             return false;27             else tem=a[x][y-1]/a[x][y];28             break;29     }30     if(flag[tem]==0&&tem>=1&&tem<=13)31     {32         flag[tem]=1;33         a[x][y+1]=tem;34         return true;35     }36     else return false;37 }38 39 void dfs(int x, int y)40 {41     if(x==4)42     {43         ans++;44         /*for(int i=0; i<4; i++)45         {46             for(int j=0; j<3; j++)47             {48                 cout<<a[i][j]<<"   ";49             }50             cout<<endl;51         }52         cout<<endl<<endl;*//*注释部分为打印复合要求的数字填写情况*/53         return;54     }55     for(int i=1; i<=13; i++)56     {57         if(!flag[i])58         {59             a[x][y]=i;60             flag[i]=1;61             bool check=Check(x,y,i);62             if(check)63             {64                 if(y==0)65                     dfs(x, y+1);66                 else67                     dfs(x+1, 0);68             }69             if(check)70             {71                 flag[i]=0;72                 flag[a[x][y+1]]=0;73             }74             else75                 flag[i]=0;76         }77 78     }79 }80 81 int main()82 {83     dfs(0,0);84     cout<<ans;85     return 0;86 }

答案:

如果本文对你有帮助,麻烦给个

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台