解题思路:这道题一开始的想法就是状态压缩,即考虑如何判重,由于蛇并非是直线的,所以想到了以每一个点的上下左右共四个
值来表示相对位置。最开始想如何用四进制来表示它,无语。。。。。还是题目做少了,直接用两位来表示一个点即可(两位的二
进制数可以表示0-3)。剩下的关键就是判断蛇头会不会与蛇尾发生碰撞,详细的就看代码吧。。
整体的思路还是比较简单,但是代码很复杂,一般这种复杂点的搜索题代码都挺长的,所以很容易出错,不过可以用A*算法,而且
确实比朴素的算法要快,暂时还没想清楚怎么做。。。
#include
#include
#include
#include
using namespace std;
const int MAX_S = (1 Q;
int get_start()
{
int dir, dx, dy, s = 0;
for(int i = L - 1; i > 0; i--)
{
dx = pos[i].x - pos[i - 1].x, dy = pos[i].y - pos[i - 1].y;
if(dx == 0 && dy == 1)
dir = 1;
else if(dx == 0 && dy == -1)
dir = 3;
else if(dx == -1 && dy == 0)
dir = 0;
else if(dx == 1 && dy == 0)
dir = 2;
s = s > 2;
if(x == pre_x + fx[dir] && y == pre_y + fy[dir])
return false;
pre_x = pre_x + fx[dir], pre_y = pre_y + fy[dir];
}
return true;
}
void BFS()
{
State a;
int dx, dy, s;
while(!Q.empty())
{
a = Q.front();
Q.pop();
for(int i = 0; i 0 && dy > 0 && dx
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: SAM(segment anything model)分割一切 Demo测试及API调用
一,SAM介绍
二,Demo-Test:
三:Code-Test
四,扩展阅读:
五,参考文章:SAM 分割一切 一,SAM介绍 1.1 介绍 1.2 项目链接 二,Demo-Test: 2.1 Demo功能介绍 2.1.1,首页就是这个SAM,点击try demo,可以选择它的自带图片,也可以自己添加。 2.1.2 , 自己上传图片测试: 三:Code…