蓝桥杯个人总结

蓝桥杯个人总结

前言

提示: 今年第一次参加蓝桥,水了个省二,感到之前整理的好多算法技巧都没有用上,有点不甘心,下面附上个人的一些总结。希望大佬们多指点,争取下次水进国赛。。。。


一、DFS深搜类总结

深搜题目经个人总结基本差不多大致两部
1)一个跑程序的主函数main()
2)灵魂函数dfs()!!!找突破口
(基本一个套路下来)
先举一个普通的例子吧,带入分析一下

2013四届2t和2015六届3t就十分相似

2013年4届2t是马虎的算式
小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?
他却给抄成了:396 x 45 = ?
但结果却很戏剧性,他的答案竟然是对的!!
因为 36 * 495 = 396 * 45 = 17820
类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54
假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)
能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?
请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
答案直接通过浏览器提交。
注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。
答案:142

这个题如果暴力水既麻烦又没水平
我们用dfs水一下

#include<bits/stdc++.h>
using namespace std; 
int a[66];//存1~9中的数
int b[66];//存是否被标记
int f=0;
//套路开始,套路×1
//首先开两个数组,记得开大一点,不然会溢出
void dfs()//主函数开始深搜
{
if(k==5{//套路×2,突破口
 int x = (a[0] * 10 + a[1]) * (a[2] * 100 + a[3] * 10 + a[4]);
 int y = (a[0] * 100 + a[3] * 10 + a[1]) * (a[2] * 10 + a[4]);
 if(x==y)
 {f++;}
 }
 forint i=1;i<9;i++{
 if(!b)//如b为0即未被标记时
 {
 a[k]=i;
 b[i]=1;//标记他
 dfs(k+1;//深搜到底
 b[i]=0;//因为上面深搜到底了,要开始新一轮深搜,所以释放这一层的b[i],开始新的一轮。
 }
 }
 return ;
}

int main()
{
dfs(0);
cout<<f<<endl;
return 0;
}

至于2015六届3t三羊献瑞这道题和以上那道题基本是一个模板。只是三羊有几个特判条件,即三必定为1(因为最后三在第一个位置出现是进位,最大只能是1.)和祥不能为0,否则无法完成进位。
在这里插入图片描述

以上这两个例子都是关于排列式,比较简单,但可以以此来熟悉dfs的框架,下面开始用框架研究一下蓝桥杯的其他dfs

还是用一个简单一些的例子作为开篇吧 {阅读过程请自动带入前面套路找找规律}
ex:2013年四届3t 第39级台阶
题目描述:
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
输出格式:
输出一个整数

#include<bits/stdc++.h>
using namespace std; 
int f=0;
void dfs(int x,int step)//主函数开始深搜
{
if(x>=39)//突破口
{
if(x==39&&step%2==0)
f++;
return ;
}
dfs(x+1,step+1);//迈一个台阶
dfs(x+2,step+1);//迈两个台阶
}

int main()
{
dfs(0,0);
cout<<f<<endl;
return 0;
}

由此可见,但凡蓝桥dfs基本是一个套路下来,只不过有的里面融入了数学计算成分,
所以算法还是要数学基础做支撑的~>.<!!!

因为手撕代码比较麻烦,所以我接下来直接上图了,请大佬们多包涵,多指教。
——————————————————————————————————————
2014年5届3t
李白打酒
在这里插入图片描述
2014年5届9t
地宫取宝
在这里插入图片描述

2015年6届7t
牌型种数

在这里插入图片描述
2017年8届4t
方格分割
这道题厉害了,需要用到坐标,由中间向四周发散,一般新手到这里弄明白了就可由新手进化成菜鸟了(๑•̀ㅂ•́)و✧
所以,,,加油ヾ(◍°∇°◍)ノ゙——————————————————————————————————————在这里插入图片描述
————————————————————————————————————————————————————————————————————————————————————————
以上是部分简单蓝桥中出现的dfs,其中还有部分较为复杂的没有列出,以后会再列出与大佬们沟通请教,比较懒o(╥﹏╥)o字体草请多包涵~~~
蟹蟹大家理解宽容,,,蟹蟹٩(‘ω’)و

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值