1、在第六章我们学习了图的定义及一些基本术语:有向图和无向图、度、入度、出度、邻接点、连通图等;学习了图的类型定义;学习了用不同的方法(邻接矩阵、邻接表)表示图的存储结构;图的遍历(深搜与广搜);图的应用(最小生成树、最短路径);在学习过程中,首先得先熟悉了图相关的术语定义等内容才能继续更好地往下学,后面学习的图的遍历,存储结构等会有较大难度,需要不断看书找资料加深理解。
2、拯救007:
刚开始看到这个题目的时候,思考了一定时间有了一点思路,但是到最后动手打代码的时候还是会有点被卡住,后来通过百度和csdn博客找到相关的解题方法,了解到:
(1)首先要判断人是否可以到达岸边
(2)之后判断是否能跳出第一步,即能否从岸边跳到第一只鳄鱼的头
(3)判断能否从一个鳄鱼跳到另一个鳄鱼
(4)判断能否跳跃到池外
(5)进行深度搜索
实际写代码过程中,先把相关数据定义好:
struct node{ int x,y; }dot[110]; int vis[110]; int flag=0; int N,D;
之后根据整理好的思路将一个个子函数写出来:
int succ(int k) { if(dot[k].x-D<=-50||dot[k].x+D>=50||dot[k].y-D<=-50||dot[k].y+D>=50) return 1 else return 0; }
int first(int j) { int d1=dot[j].x*dot[j].x; int d2=dot[j].y*dot[j].y; int r=(D+7.5)*(D+7.5); if(r>=d1+d2) return 1; return 0; }
int jump(int u,int i) { int d1=pow(dot[u].x-dot[u].x,2); int d2=pow(dot[i].y-dot[i].y,2); if(D*D>=d1+d2) return 1; return 0; }
最后在将main函数写出,但是在写代码过程中,我没有很准确地计算好相关数据,然后还有一些大于小于号等问题导致我的代码总是出现错误,无法通过检测点,后来通过自己检查了很久,还请同学帮忙看了代码才找出了错误,所以打代码的时候除了必要的知识过关之外还需要非常细心。运用广搜的时候还需要对相关知识了解清楚,对怎么进行下一步搜索这个刚开始忘了怎么实现导致被卡了较久,后面通过看书并结合慕课将其弄明白。main函数如下:
int main() { cin>>N>>D; int i; for(i=0;i<N;i++) cin>>dot[i].x>>dot[i].y; if(D>=42.5) cout<<"Yes"<<endl; else { for(i=0;i<N;i++) { if(firststep(i)) { memset(vis,0,sizeof(vis)); DFS(i); } } if(flag==1) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }
3、上次制定的计划大致完成,下一周的目标是将书中图这章内容多看几遍,记得更清楚一些,提高自己小测的成绩,不再在一些细节的地方失分。
原文:https://www.cnblogs.com/luolllll/p/10891553.html