首先是对搜索的一点新的感悟,在写了几周的搜索题仍然没有任何发现和提升的情况下,果不其然在新星杯上,因为一道比较开门见山的搜索题耽误了大量时间,因祸得福可以有由自己亲手思考亲手做出来,话不多说,先上题

一开始,我想到了全排列,或者说排列组合,可是别说全排列光情况就有几万几十万种,就是排列组合我也只能通过数学的思维描述无法做到用代码将他们列出来再进行保存;

所以我将思路转换到了搜索上面,对n次操作进行搜索,像树一样的结构就是搜索的本体。所以大体我的想法就是在dfs函数里并行三种情况,进行搜索和回溯操作,此时我的脑中已经大致有了想法但是受限于对搜索的熟练度较低,我辗转了许久才写出一个ac的答案。(会写了之后又忘记了回溯)

上一下代码吧

#include<bits/stdc++.h>
using namespace std;
int k,d,a,sum,ans;
void dfs(int x,int y,int z){if(x==k&&y==d&&z==a){if(sum==25)ans++;return;}else{if(x<k){int p=sum;sum+=5;if(sum>25)sum=25;dfs(x+1,y,z);sum=p;}if(y<d){int p=sum;sum-=10;if(sum<0)sum=0;dfs(x,y+1,z);sum=p;}if(z<a){int p=sum;sum+=2;if(sum>25)sum=25;dfs(x,y,z+1);sum=p;}}
}
int main () {cin>>k>>d>>a;dfs(0,0,0);cout<<ans;
}

dfs到这,现在借用一下大佬的理解作为下周的学习目标吧

/************************************************************
广度优先搜索算法的基本思想:
1、对于初始状态入队,设置初始状态为已访问
2、如果队列不为空时,出队队头元素,否则跳到第5步
3、检查出队的元素是否为最终解,如果是则跳到第5步。
4、对于出队的元素,检查所有相邻状态,如果有效并且未访问,则将所有有效的相邻状态进行入队,并且设置这些状态为已访问,然后跳到第2步重复执行
5、检查最后出队的元素是否为最终解,如果是输出结果,否则说明无解广度优先搜索是借助于队列这种数据结构进行搜索的,队列的特点是先
进先出(FIFO),通过包含queue这个队列模板头文件,就可以利用c++
的队列模板定义自己的队列了,队列的操作非常简单,主要有以下几个:
q.push() 入队操作
q.front() 取队头元素
q.pop() 队头元素出队
q.size() 获取队列的元素个数
q.empty() 判断队列是否为空,为空返回true,不为空返回false广度优先搜索算法的关键是要搞清楚求解过程中每一步的相邻状态有哪些,
每个状态需要记录什么信息,在搜索过程中如何标记这些状态为已访问。在本题中,相邻状态为当前所在楼层通过按向上或向下按钮所能到达的楼
层,每个状态要记录的信息包括楼层编号和按按钮的次数。
*************************************************************/

然后是这周的第二个收获吧——链表;

虽然之前已经学过但是无论是理解还是各种形式的循环链表,双向链表都不是很拿手,这周算是一次巩固和复习;(尤其是对于数组模拟链表的运用优势和结构体链表的不同)

上一题我觉得对我最有帮助的题吧,对于数组模拟的开荒题;

#include<stdio.h>
struct node {int data;int next;
} p[100001];int main() {int i,j,k=0,l,x,one,n,dizhi,nextdizhi;int add1[100001];int add2[100001];scanf("%d %d",&one,&n);for(i=0;i<n;i++){scanf("%d %d %d",&dizhi,&x,&nextdizhi);p[dizhi].data=x;p[dizhi].next=nextdizhi;}while(one!=-1){add1[k++]=one;one=p[one].next;}l=k;k=0;for(i=0,j=l-1;i<=j;){if(i==j){add2[k]=add1[i];break; }else{add2[k++]=add1[j--];add2[k++]=add1[i++];}}for(i=0;i<l-1;i++){printf("%05d %d %05d\n",add2[i],p[add2[i]].data,add2[i+1]);}printf("%05d %d -1\n",add2[i],p[add2[i]].data);
}

用下标作为地址,两个子数分别为数据和“链”连着下个地址,用数组通过“链“遍历将地址存放在更易更改的小数组中进行操作;

贴题bfs就到这里了吧,下周的学习目标和复习题:

#include<iostream>//P1443
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
const int dx[8]={-1,-2,-2,-1,1,2,2,1};
const int dy[8]={2,1,-1,-2,2,1,-1,-2};//8个方向
queue<pair<int,int> > q;
int f[500][500];//存步数
bool vis[500][500];//走没走过
int main()
{int n,m,x,y;memset(f,-1,sizeof(f));memset(vis,false,sizeof(vis));cin>>n>>m>>x>>y;f[x][y]=0;vis[x][y]=true;q.push(make_pair(x,y));while(!q.empty()){int xx=q.front().first,yy=q.front().second;q.pop();//取队首并出队for(int i=0;i<8;i++){int u=xx+dx[i],v=yy+dy[i];if(u<1||u>n||v<1||v>m||vis[u][v])continue;//出界或走过就不走vis[u][v]=true;q.push(make_pair(u,v));f[u][v]=f[xx][yy]+1;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)printf("%-5d",f[i][j]);printf("\n");}//注意场宽!!return 0;
}

第二周 新星杯的收获和感触相关推荐

  1. 2019蓝桥杯每周一题第二周之Mineweep(扫雷)

    2019蓝桥杯每周一题第二周之Mineweep(扫雷) 写在开头: 写这个题的时候真的是一次次的纠错,题不难,里面的逻辑关系有复杂,每一次都以为会运行正确了,结果又一个小地方出错,写了一上午还是有问题 ...

  2. 思特奇杯·云上蓝桥 -算法 集训营第二周

    思特奇杯·云上蓝桥 -算法 集训营第二周 1. 带分数 题目描述 解法一 解题思路 python代码 2. 李白打酒 题目描述 解法一 解题思路 python代码 3. 第 39 级台阶 题目描述 解 ...

  3. 【Python 学习_第2周_程序代码】金角大王培训第二周练习_购物车代码,将写的代码和老师代码比较,记录下收获...

    培训第二周,课堂练习为编写一段购物车代码,需求描述如下: 1.提示用户输入薪水 2.用户输入薪水后,打印商品编号.内容及价格 3.提醒用户输入商品代码,若余额大于等于商品价格,可购买:若小于,提示用户 ...

  4. 第二届八一杯网络大学生数学竞赛试题

    2020年又迎来了一个八月,3年前的今天是八一开通公众号的期初,到目前已经陪伴同学们走过了三个春夏轮回,度过大学期间最美好的三年,同时也祝贺公众号三周年纪念日!现正值2020年暑假,相信同学们期待已久 ...

  5. 第二周实习小记-----大牛离我们有多远

    当我开始写这篇文章的时候,已经下定决心要把我实习期的这些经历写成一个系列文章了.向大牛学习.不管一周做了些什么,都总结一下坚持的写一些东西.且思且行,不管在知识和思想上都会有所收获.所以在文章的最后我 ...

  6. 深度学习笔记 第四门课 卷积神经网络 第二周 深度卷积网络:实例探究

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  7. 【采访】腾讯社交广告高校算法大赛决赛第二周最大进步队伍——拔萝卜比赛经验及心得分享

    腾讯社交广告高校算法大赛决赛第二周 进步最大的一支队伍 她的名字叫拔萝卜 这是一支单人队伍 而且还是少有的女孩子哦 可爱.乖巧.独立的小女孩 祝贺你 话不多说直接上照片 小编对咱们的周进步冠军同学进行 ...

  8. 腾讯广告算法大赛 | 第二周周冠军心得分享

    腾讯广告算法大赛第二周周冠军出炉, 从照片上推断, 这是一位颜值与机智并存的少年. 于是在我们的强烈邀请下, 小哥哥答应给大家分享主流ctr模型的选择- 大家好,我叫葛云鹏,是来自哈尔滨工业大学深圳研 ...

  9. WaWa的奇妙冒险(第二周集训自闭现场)

    第二周周记 (一)例题记录 A-简单计算器 (水题,栈的运用) HDU - 1237 Input Output Sample Input Sample Output 理解 AC代码 B-计算 (逆波兰 ...

最新文章

  1. IIS 7.x Application Request Routing(ARR) 502错误的解决方法
  2. 《架构探险——从零开始写Java Web框架》这书不错,能看懂的入门书
  3. nginx expires配置
  4. 触手直播停服,游戏主播们涌入快手
  5. vSphere 6.7的新增功能?我应该升级吗?
  6. vue solt 属性浅析
  7. OSPF特殊区域和选路规则
  8. linux计算器shell,linux – Bash Shell中的BMI计算器
  9. intellij idea快捷键精简版
  10. 绝地反击:我的战胜贫困的经历01(转载、整理)
  11. 烦人的 1KB 1KB文件夹快捷方式病毒专杀
  12. 【自然语言处理】【实体匹配】PromptEM:用于低资源广义实体匹配的Prompt-tuning
  13. 趋势科技移动客户端病毒报告
  14. alios下载_AliOS-Things ESP8266 编译下载
  15. 名片识别,史上最简单的集成攻略来啦!附有SDK包
  16. 51nod 1213 二维曼哈顿距离最小生成树
  17. CSDN写博客出现浏览器“不支持隐私模式,需用普通模式访问”处理
  18. java实现数据同步
  19. 第七讲:flask框架
  20. ZT210打印标签方法及常见问题20230110

热门文章

  1. 本周总结 前端第二次作业 模仿制作百度界面
  2. 点到直线的距离,垂足,对称点,两点所成的直线方程
  3. android应用商店检查更新,以编程方式检查Play商店中的应用更新
  4. 【Jolla】离线更新方法
  5. Q3净利同比下滑超30%,脱离小米的“云米们”还能长大吗?
  6. SAP_PP常用增强
  7. ********随便看看**********
  8. 在macOS上运行PSCN-debug
  9. 【自语】如何前后端的web及移动都打通?
  10. ORACLE财务管理系统教程