题解 CF877D 【Olya and Energy Drinks】
一道几乎板子的广搜题。(然而我调了10几次才过
我们只需要在广搜板子的基础上添加移动 $1 -k $步的部分即可
就像这样:
int h[] = {-1 , 1 , 0 , 0};
int l[] = {0 , 0 , -1 , 1};
for(int i = 0;i < 4;i++)
{
for(int j = 1;j <= k;j++)
{
int xx = x + h[i] * j;
int yy = y + l[i] * j;
...
}
}
值得注意的是这里一旦走出了地图或者头撞南墙就要直接break
就像这样:
int h[] = {-1 , 1 , 0 , 0};
int l[] = {0 , 0 , -1 , 1};
for(int i = 0;i < 4;i++)
{
for(int j = 1;j <= k;j++)
{
int xx = x + h[i] * j;
int yy = y + l[i] * j;
if(x < 0 || x >= n || y <= 0 || y >= m) // 这里地图从0开始存
break;
if(a[x][y] == '#')
break;
...
}
}
其余部分就和板子一样啦。
代码不贴了
标签:int,solution,板子,break,++,cf877d From: https://www.cnblogs.com/iorit/p/18056992