cddzyc 2021-12-09 05:54 采纳率: 0%
浏览 17
已结题

在将C程序移植至ARDUINO时运行不成功

以下为移植代码(在ARDUINO中无法运行)

char a;
int b;
char c;
typedef struct node
{
  int x,y;
  int pre;
}strnode;
int ans,d[4][2] = { {-1,0},{0,-1},{1,0},{0,1} },m[5][5],v[5][5];
strnode que[200];
void bfs();
void output(int ans);
void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
 int i = 0, k, j = 0;
 for (i = 0; i <5; i++)
  {
    for (j = 0; j < 5; j++) {
      c=Serial.read();
      m[i][j]=Serial.parseInt();
    }
  }
  bfs();
  output(ans);
}

void loop() {
  // put your main code here, to run repeatedly:

}
void bfs()
{
  memset(v, 0, sizeof(v));
  int head = 0, tail = 0, i = 0;
  que[tail].x = 0;
  que[tail].y = 0;
  que[tail++].pre = -1;
  v[0][0] = 1;
  while (head < tail)
  {
    strnode temp = que[head++];
    if (temp.x == 4 && temp.y == 4)
    {
      ans = head - 1;
      return;
    }
    for (i = 0; i < 4; i++)
    {
      int dx = temp.x + d[i][0];
      int dy = temp.y + d[i][1];
      if (!v[dx][dy] && !m[dx][dy]&&dx>=0&&dy>=0&&dx<5&&dy<5)
      {
        que[tail].x = dx;
        que[tail].y = dy;
        que[tail++].pre = head - 1;
        v[dx][dy] = 1;
      }
    }
  }
}
void output(int ans)
{
  if (que[ans].pre != -1)
  {
    output(que[ans].pre);
  }
  Serial.print(que[ans].x);
  Serial.println(que[ans].y);
  return;
}

运行结果就是不停输出-1

用广搜走解决迷宫问题,然后输出路线

在串口中用0,1以二维数组形式在串口中输入迷宫,然后在串口中输出结果

展开全部

  • 写回答

1条回答 默认 最新

  • qllaoda 2021-12-09 06:18
    关注

    arduino资源很有线,尽量不要用递归算法

    评论
    编辑
    预览

    报告相同问题?

    问题事件

    • 已结题 (查看结题原因) 2月14日
    • 创建了问题 12月9日
    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部