动不了一点 2024-03-10 17:35 采纳率: 17.2%
浏览 2

为什么我这个深度搜索出不来


#include "iostream"
using namespace std;
int sum1;
int next1[4][2] = { {0,1},{0,-1},{1,0},{-1,0} };    //移动步数
int bookmap1[15][15] = { 0 };
int map1[10][7] = {        //地图1
{ 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0},
{ 1, 0, 0, 0, 0, 0, 0},
{ 1, 0, 0, 0, 0, 0, 0},
{ 1, 0, 0, 0, 2, 0, 0},
{ 1, 0, 0, 0, 0, 0, 0},
{ 1, 0, 0, 0, 0, 0, 0},
{ 1, 0, 0, 0, 0, 0, 0},
{ 1, 0, 0, 0, 0, 0, 0},
{ 1, 1, 1, 1, 1, 0, 3}
};
void  dfs(int x, int y) {
    int tx, ty;
    if (x == 9 && y == 6) {
        sum1++;
        return;
    }

    for (int i = 0; i <= 3; i++) {
        tx = x + next1[i][0];
        ty = y + next1[i][1];
        if (tx < 0 || ty < 0 || tx>9 || ty>6 || map1[tx][ty] == 1)
            continue;
        if ((map1[tx][ty] == 0 ||map1[tx][ty]==3) && bookmap1[tx][ty] == 0)
        {
            bookmap1[tx][ty] = 1;
            dfs(tx, ty);
            bookmap1[tx][ty] = 0;
        }
    }
}
int main() {
    bookmap1[4][4] = 1;
    dfs(4, 4);    
    cout<<sum1;
}

输出不了

  • 写回答

4条回答 默认 最新

  • 关注

    动不了一点 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    可能是因为你在 main 函数中输出 sum1 的值时,sum1 还没有被赋值。你可以将输出语句放在调用 dfs 函数之后,确保 sum1 有值后再进行输出。

    另外,你没有对 sum1 进行初始化,所以它的初始值是未定义的。你可以在 main 函数中添加 sum1 = 0; 进行初始化。

    修改后的代码如下:

    #include "iostream"
    using namespace std;
    int sum1;
    int next1[4][2] = { {0,1},{0,-1},{1,0},{-1,0} };    //移动步数
    int bookmap1[15][15] = { 0 };
    int map1[10][7] = {        //地图1
      { 1, 1, 1, 1, 1, 1, 1 },
      { 1, 0, 0, 0, 0, 0, 0},
      { 1, 0, 0, 0, 0, 0, 0},
      { 1, 0, 0, 0, 0, 0, 0},
      { 1, 0, 0, 0, 2, 0, 0},
      { 1, 0, 0, 0, 0, 0, 0},
      { 1, 0, 0, 0, 0, 0, 0},
      { 1, 0, 0, 0, 0, 0, 0},
      { 1, 0, 0, 0, 0, 0, 0},
      { 1, 1, 1, 1, 1, 0, 3}
    };
    void  dfs(int x, int y) {
      int tx, ty;
      if (x == 9 && y == 6) {
        sum1++;
        return;
      }
    
      for (int i = 0; i <= 3; i++) {
        tx = x + next1[i][0];
        ty = y + next1[i][1];
        if (tx < 0 || ty < 0 || tx>9 || ty>6 || map1[tx][ty] == 1)
          continue;
        if ((map1[tx][ty] == 0 ||map1[tx][ty]==3) && bookmap1[tx][ty] == 0) {
          bookmap1[tx][ty] = 1;
          dfs(tx, ty);
          bookmap1[tx][ty] = 0;
        }
      }
    }
    int main() {
      sum1 = 0;
      bookmap1[4][4] = 1;
      dfs(4, 4);
      cout << sum1;
    }
    

    这样应该可以正确输出结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月10日

悬赏问题

  • ¥15 微信小程序web-view嵌套H5页面IOS左滑会出现相同的页面,有什么解决方法吗?
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼