蓝桥杯真题打卡题解 Day 3
额,至于为啥从第三天开始,就不解释了。 ##第一题
文章图片
作为C语言小i白的我刚开始接触这一道题,毋庸置疑,用了n个for循环,简直就是痛苦。而今天我要分享一下dfs做法。
###试题分析
问题分解:
首先,我们需要知道我们要用到1~9的数字。
其次,让其三边相加的结果相等。
最后,观察图可知 三个边在相加时有相等的元素。
话不多说 上代码
#include "stdio.h"
//纸牌排列
int a[10],book[10],total=0;
void dfs(int step)
{
int i,cont=0;
if(step==10){
//定义三个变量来保存并判断
int sum1,sum2,sum3;
sum1=a[1]+a[2]+a[3]+a[4];
sum2=a[4]+a[5]+a[6]+a[7];
sum3=a[7]+a[8]+a[9]+a[1];
if(sum1==sum2&&sum2==sum3){
total++;
}//条件符合的 次数加一 }
for (i=1;
i<=9;
i++){
//用book[i]==0来判断 为0 即未使用这个数,为1则表示被使用过了 去重
if(book[i]==0){
a[step]=i;
book[i]=1;
dfs(step+1);
//引用自身,判断下一个数
book[i]=0;
//重置,
}
}
}int main(){
dfs(1);
printf("%d",total/6);
return 0;
}
【蓝桥杯冲刺题解|蓝桥杯31日冲刺 Day 3】运行结果:
144
##第二题
题目介绍
文章图片
这题比较简单我是直接爆
代码如下:
#include
int main()
{
int y;
for(y=1950;
y<2014;
y++){
int a=y/1000%10;
int b=y/100%10;
int c=y/10%10;
int d=y%10;
if(a+b+c+d==2014-y){
printf("%d\n",y);
}
}
return 0;
}
结果如下:
1988
2006
嗯,,因为小明年纪大点嘛 所以他的出生年纪肯定是1988而另一个自然是他表弟的年纪。
##总结
今天主要学习了bfs及dfs,
推荐博客链接
https://blog.csdn.net/m0_46549425/article/details/108025133?spm=1001.2014.3001.5506
推荐阅读
- 蓝桥杯|蓝桥杯31天冲刺打卡(Day3)
- #|蓝桥杯31天冲刺打卡题解(Day6)
- 蓝桥杯|蓝桥杯AcWing学习笔记 6-1双指针的学习(附相关蓝桥真题(日志统计、完全二叉树的权值))
- #|蓝桥杯31天冲刺打卡题解(Day2)
- #|蓝桥杯31天冲刺打卡题解(Day3)
- #|蓝桥杯31天冲刺打卡题解(Day1)
- 算法|PyTorch 之 Checkpoint 机制解析
- 计算机视觉教程|计算机视觉教程2-7(天使与恶魔?图文详解图像形态学运算(附代码))
- 蓝桥杯|第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组试题 A: 门牌制作——解题步骤