问题标题: 酷町堂:拜托各位找一下问题

0
0
已解决
张曈
张曈
高级守护
高级守护

最近出现了一个匪夷所思的现象 明明调用了头文件queue却爆[Error] 'queue' does not name a type
想问问问题出在哪里 如何修改

题号 6190
附链接 https://ke.codingtang.com/#/problem/problemSub?id=6190
我的代码 

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
int n,m;
char a[60][60],s[10001];
int len,b[60][10001];
struct point{
    int x,y;
}next[60][60][4];
struct NODE{
    int x,y,t,step;
};
queue <NODE> q;
void init() {
    len=1;
    while(s[len]!=0){
        len++;
    }
    s[len]='*';
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            char c=a[i][j];
            for(int k=i+1;k<=n;k++)
                if(a[k][j]!=c){
                    next[i][j][0].x=k;
                    next[i][j][0].y=j;
                    break;
                }
            for(int k=i-1;k>0;k--)
                if(a[k][j]!=c){
                    next[i][j][1].x=k;
                    next[i][j][1].y=j;
                    break;
                }
            for(int k=j+1;k<=m;k++)
                if(a[i][k]!=c){
                    next[i][j][2].x=i;
                    next[i][j][2].y=k;
                    break;
                }
            for(int k=j-1;k>0;k--)
                if(a[i][k]!=c){
                    next[i][j][3].x=i;
                    next[i][j][3].y=k;
                    break;
                }
        }
    }
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%s",a[i]+1);
    }
    scanf("%s",s+1);
    init();
    q.push(NODE{1,1,0,0});
    int nx,ny;
    memset(b,0xff,sizeof(b));
    while(!q.empty()){
        NODE h=q.front();
        q.pop();
        if(a[h.x][h.y]==s[h.t+1]){
            if(h.t+1==len){
                printf("%d\n",h.step+1);
                break;
            }
            q.push(NODE{h.x,h.y,h.t+1,h.step+1});
        }
        else {
            for(int i=0;i<4;i++){
                nx=next[h.x][h.y][i].x;
                ny=next[h.x][h.y][i].y;
                if(nx!=0 && ny!=0 && b[nx][ny]<h.t){
                    b[nx][ny]=h.t;
                    q.push(NODE{nx,ny,h.t,h.step+1});
                }
            }
        }
    }
    return 0;
}

 


0
已采纳
沙宸安
沙宸安
中级启示者
中级启示者

其问题在于:没加using namespace std;

沙宸安在2021-02-18 17:22:32追加了内容

注:希望其他同学不要蹭我答案

0
张帆
张帆
中级天翼
中级天翼

能不能放在洛谷剪贴板,我复制到Dev-c++里面看一下。

0
我要回答