蓝桥杯玩具蛇程序答案错误

源代码链接

https://blog.csdn.net/Junyi727/article/details/125024704
源代码如下:

void dfs(int x, int y, int st)
{
    //当走满16就代表一个方案成立
    if(st == 16)
    {
        ans++;
        return ;
    }
    //上
    if(x-1 >= 1 && !bk[x-1][y])
    {
        bk[x-1][y] = 1;
        dfs(x-1, y, st+1);
        bk[x-1][y] = 0;
    }
    //下
    if(x+1 <= 4 && !bk[x+1][y])
    {
        bk[x+1][y] = 1;
        dfs(x+1, y, st+1);
        bk[x+1][y] = 0;
    }
    //左
    if(y-1 >= 1 && !bk[x][y-1])
    {
        bk[x][y-1] = 1;
        dfs(x, y-1, st+1);
        bk[x][y-1] = 0;
    }
    //右
    if(y+1 <= 4 && !bk[x][y+1])
    {
        bk[x][y+1] = 1;
        dfs(x, y+1, st+1);
        bk[x][y+1] = 0;
    }
    return ;
}


这是我写的代码:

int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
void bfs(int x,int y,int st)
{
  if(st==16)
  {
    sum++;return;
  }
  for(int k=0;k<4;k++)
  {
    int xx=x+dx[k],yy=y+dy[k];
    if(xx<1||xx>4||yy<1||yy>4) break;
    if(pd[xx][yy]==1)break;
    pd[xx][yy]=1;
    bfs(xx,yy,st+1);
    pd[xx][yy]=0;
  }


请问如何改正

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^