社区讨论

蒟蒻求救!

P1747好奇怪的游戏参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi6wv7jv
此快照首次捕获于
2025/11/20 12:08
4 个月前
此快照最后确认于
2025/11/20 12:08
4 个月前
查看原帖

求大神解释为什么会90分

第二个点一直wa

C
#include<bits/stdc++.h>
#define Fr(i,a,b) for(int i=(a);i<=(int)(b);++i)
#define Dr(i,a,b) for(int i=(a);i>=(int)(b);--i)
using namespace std;
#define Inf 0x3f3f3f3f
#define M 105
int x,y;
int mv[12][2]={{-1,2},{-1,-2},{1,-2},{1,-2},{2,2},{-2,-2},{2,-2},{-2,2},{2,1},{2,-1},{-2,1},{-2,-1}};
struct node{
    int stp,x,y;
};
bool vis[55][55];
int solve(int ax,int ay){
    memset(vis,0,sizeof(vis));
    queue<node>Q;
    while(!Q.empty())Q.pop();
    if(ax==1&&ay==1)return 0;
    Q.push((node){0,ax,ay});
    vis[ax][ay]=1;
    while(!Q.empty()){
        node now=Q.front();
        Q.pop();
        if(now.x==1&&now.y==1)return now.stp;
        Fr(i,0,11){
            node nxt;
            nxt.x=now.x+mv[i][0],nxt.y=now.y+mv[i][1],nxt.stp=now.stp+1;
            if(nxt.x<1||nxt.y<1||nxt.x>50||nxt.y>50)continue;
            if(vis[nxt.x][nxt.y])continue;
            vis[nxt.x][nxt.y]=1;
            Q.push(nxt);
        }
    }
    return 0;
}
int main() {
    scanf("%d %d",&x,&y);
    cout<<solve(x,y)<<endl;
    scanf("%d %d",&x,&y);
    cout<<solve(x,y)<<endl;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...