Robots75 2023-07-21 17:28 采纳率: 50%
浏览 39
已结题

c++for循环意外错误

我真服了
这段代码好端端的直接RE了,反反复复,如果把for循环注释掉就好了,求答案

#include<iostream>
#include<queue>
#include<cstring>
#define N 25
using namespace std;
struct node{
    int x,y;
};
int Gh[8][2]={{-2,-1},{-2,1},{-1,2},{-1,-2},{1,-2},{2,-1},{2,1},{1,2}};
int Ge[4][2]={{-2,-2},{-2,2},{2,-2},{2,2}};
queue<node>q;
int map[N][N],inq[N][N],u,v;
bool judge(int a,int b){
    if(a>20||b>20||a<1||b<1)return 0;
    if(inq[a][b]==1)return 0;
    return 1;
}
int main(){
    node b,w,tp;
    cin>>b.x>>b.x>>w.y>>w.y;
    /*memset(map,0,sizeof map);
    memset(inq,0,sizeof inq);
    map[b.x][b.y]=0;
    inq[b.x][b.y]=1;
    q.push(b);
    while(!q.empty()){
        tp=q.front();
        q.pop();
        for(int i=0;i<8;i++){
            //马的方式
            u=tp.x+Gh[i][0];
            v=tp.y+Gh[i][1];
            if(judge(u,v)){
                inq[u][v]=1;
                q.push((node){u,v});
                map[u][v]=map[tp.x][tp.y]+1;
            }
        }
        for(int i=0;i<4;i++){
            //马的方式
            u=tp.x+Ge[i][0];
            v=tp.y+Ge[i][1];
            if(judge(u,v)){
                inq[u][v]=1;
                q.push((node){u,v});
                map[u][v]=map[tp.x][tp.y]+1;
            }
        }
    }
    printf("%d\n",map[1][1]);*/
    memset(map,0,sizeof map);
    memset(inq,0,sizeof inq);
    map[w.x][w.y]=0;
    inq[w.x][w.y]=1;
    q.push(w);
    while(!q.empty()){
        tp=q.front();
        q.pop();
        for(int i=0;i<8;i++){
            //马的方式
            u=tp.x+Gh[i][0];
            v=tp.y+Gh[i][1];
            if(judge(u,v)){
                inq[u][v]=1;
                q.push((node){u,v});
                map[u][v]=map[tp.x][tp.y]+1;
            }
        }
        for(int i=0;i<4;i++){
            //马的方式
            u=tp.x+Ge[i][0];
            v=tp.y+Ge[i][1];
            if(judge(u,v)){
                inq[u][v]=1;
                q.push((node){u,v});
                map[u][v]=map[tp.x][tp.y]+1;
            }
        }
    }
    for(int i=1;i<=20;i++){
  //就这个for循环
    }
            
    printf("%d\n",map[1][1]);
    return 0;
}
}
  • 写回答

3条回答 默认 最新

  • Robots75 2023-07-21 17:41
    关注

    重写了一遍,竟然解决了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月21日
  • 已采纳回答 7月21日
  • 请详细说明问题背景 7月21日
  • 创建了问题 7月21日

悬赏问题

  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义