4/28学习总结

今天完成了那个关于项目的设计报告,总结了一下项目,大总结如下。

对于本次项目的话,大致的感觉我认为还是可以,至少在整体看来各个功能也都实现了,但是还有一些能够完善加强的地方没有实施,就像人机对战时的ai算法,我用的就是八个方向遍历求积分最大值下棋,此方法有一缺陷就是ai只能防守,他不能进攻也就导致了最后棋局要嘛平局要嘛玩家赢,有很小概率ai会胜利。还有一些小bug就是在人机大战有时候ai反应不过来,有时会会出现类似于断触类似操作,玩家下棋后白棋没反应,但是一悔棋让玩家重新下棋此bug就又没了,这个bug一直没找到是什么原因造成的。但是对于整体而言,我对这次项目还是感觉比较满足了,因为第一次写项目,该完成的功能也都实现了,我觉得也算一种成功。

今天的话说实话有点懈怠了因为五一假期,但是还是成功复习了一下昨天看的dfs自己也敲出来了,还完成了一道上次预备役测试的一道题如下:

如图:

@@@@@@@@

@A @@@@@@

@@@@@@B @

@@@@@@@@

一个NxM的区域中(下标均从0开始),点A(1,1)与点B(2,6)位置如图,其中A想通过上下左右四个方向移动到达B,但是目前需要5+1=6步才能走到B。于是,他在地图外圈加上四块魔镜,使得他能从地图边沿的魔镜走到地图另一侧,即能从(0,y)到达(n-1,y)或从(x,0)到达(x,m-1),反之亦然,只需要一步就能穿越魔镜。

问,给定地图大小和A,B两点位置,求A到B的最短距离。

Input

第一行两个整数N、M。

第二行四个整数,Xa Ya Xb Yb,下标保证在地图范围以内。

Output

对每一组输入,输出最短路径。

Sample Input 1 

4 8
1 1 2 6

Sample Output 1

4

Hint

(1<=N、M<=1000000000000000)

当时乍一眼一看没看懂什么意思这道题,主要是当时那个a坐标看出来了b坐标当时忘记了从0开始,审题就崩了,现在题目读懂了,发现就是一道签到题,真真正正的签到题,从横向和纵向两个方向讨论,因为有魔镜反转,所以直接加个abs即可,再在直接相减和过魔镜距离中选最小的即可。最后将两个方向相加即可。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n,m;
  cin>>n>>m;
  long long x1,y1,x2,y2;
	cin>>x1>>y1>>x2>>y2;
	long long y = min(abs(x1-x2),n-abs(x1-x2));
	long long x = min(abs(y1-y2),m-abs(y1-y2));
	cout<<x+y<<endl;
}

 代码真的很短而且真的很好理解.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值