P1649 90分求助
  • 板块学术版
  • 楼主Reunite
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/8/30 00:58
  • 上次更新2023/11/4 08:35:26
查看原帖
P1649 90分求助
377760
Reunite楼主2021/8/30 00:58

第8个点错了www

数据下载后,我的程序输出23,标解22,但是我手算模拟了一下实在找不到22的路径了。

#include <bits/stdc++.h>
using namespace std;

int n,bx,by,ex,ey;
char c[105][105];
int rea[105][105];
const int dx[]={0,-1,0,1,0};
const int dy[]={0,0,1,0,-1};
struct node{
    int x,y,s,to;
};
queue <node> A;

int main(){
    memset(rea,0x3f,sizeof(rea));
    scanf("%d\n",&n);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
            cin>>c[i][j];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
            if(c[i][j]=='A') bx=i,by=j;
            else if(c[i][j]=='B') ex=i,ey=j;
    }
    node temp,now;
    temp.x=bx,temp.y=by,temp.s=0;
    rea[bx][by]=0;
    temp.to=1;
    A.push(temp);
    temp.to=2;
    A.push(temp);
    temp.to=3;
    A.push(temp);
    temp.to=4;
    A.push(temp);

    int nx,ny;
    while(!A.empty()){
        temp=A.front();
        A.pop();
//        printf("%d %d %d %d\n",temp.s,temp.to,temp.x,temp.y);
        nx=temp.x+dx[temp.to];
        ny=temp.y+dy[temp.to];
        if(c[nx][ny]!='x'&&nx>=1&&ny>=1&&nx<=n&&ny<=n&&temp.s<rea[nx][ny]){
            now.s=temp.s;
            now.to=temp.to;
            now.x=nx;
            now.y=ny;
            rea[nx][ny]=temp.s;
            A.push(now);
        }
        if(temp.to==1) now.to=4;
        else now.to=temp.to-1;
        nx=temp.x+dx[now.to];
        ny=temp.y+dy[now.to];
        if(c[nx][ny]!='x'&&nx>=1&&ny>=1&&nx<=n&&ny<=n&&temp.s+1<rea[nx][ny]){
            now.s=temp.s+1;
            now.x=nx;
            now.y=ny;
            rea[nx][ny]=temp.s+1;
            A.push(now);
        }
        if(temp.to==4) now.to=1;
        else now.to=temp.to+1;
        nx=temp.x+dx[now.to];
        ny=temp.y+dy[now.to];
        if(c[nx][ny]!='x'&&nx>=1&&ny>=1&&nx<=n&&ny<=n&&temp.s+1<rea[nx][ny]){
            now.s=temp.s+1;
            now.x=nx;
            now.y=ny;
            rea[nx][ny]=temp.s+1;
            A.push(now);
        }
    }
    if(rea[ex][ey]>1e9){
        printf("-1");
        return 0;
    }
    else printf("%d",rea[ex][ey]);

    return 0;
}

输入:

32
x . x . x . x x . . . . . x x . x x x x . x . . x . . . x x x x 
x . . . x x x x . x x . . . x . . . x . . . . . x x . . x x . x 
x x x . x . . . x . x . . . . x . x . . . x x x x x x x . . . . 
x x . . x . x x x x x x . x x . x . x . . x x x . B . . . x . . 
. x x x x x . x . . . . x x . x . . . . . . x x . x x . x . . x 
x x x . . x . x x . x x . x . x . x x . . . x x . . x . x x x x 
x . x x x x . . x . . . x x x . . x . . . . x x x . . x x . x x 
x . . x x . . . x . . . x x x x . . x x x x . . . x . . x x . . 
. x . . . . x . x x . . x x . x x x . . x x . x . x x . . . x x 
x x . x x . x . . . x x . . . . . . . . . x x . . . x . . x . x 
. . . x x x . x x x x . . . x x x x x . x . . x . . x . . . x x 
x . . . . x x x . . . . x . x . x x . x x . x x . x . . x . x . 
x x x . x . x x . . x . . . . x x x x . . x x . x x . . . x . x 
x x x x x x . . . . x . . x . x x x . x x . . . . . . . x x . x 
. . . x . x . . . . x x x x x x x . . x . . . . x x . . . . . . 
x x x x x . . . x x . x . . . . . . x x . x . x x . x x x . x x 
. . x x x x . . . x x x . x . x x x x . . . . . x x . . . x x x 
x . x . . . . x x . x x x x x . x x . . . x . x x . . x x x . x 
x . x . . x . x . . x . . . x x x . x . x . x x . x x x x x . . 
x x x x . . x x . x . x . x x . x . x . . x x x x . . x x x x x 
x . x . x x . . . x . . x . x . x x . x . . . . . x x . . x . x 
x x x . . . . x x . x . x . x . . x . . x x x . . . . x . . . . 
. x . x x x . x x x x x x x . x x . . x x x . . . x . x . . x x 
. x . x x x x . . . x . . x . . x x . x x . . x . x . x . x x x 
x x x x x . . x . . x x x . x x . . . x . x . . x . . . . x x x 
x . x x x x . x x . x x x x . . . x x x . x x . x . . x . x x . 
x . x . . x . x x . . x . . x . x . x . . . x x x x . . x x x x 
. x x x . . . x . . x . . x x x x x . . x . x . . x . . x x . x 
. . x x . . . x . x . x . x . . . x x . x x . x . x x . . . . x 
x x . x x . x x x . x . x . . . x x x . x x . x . x x x x . . . 
x x x . x x x x x x x . x . . . x x . x . x x . . . . . x x . . 
x . . x . x . . . x . . x x . x x . . . . x . x x x x . . x . A 

输出:22

2021/8/30 00:58
加载中...