50分,大佬救一下吧
查看原帖
50分,大佬救一下吧
1439254
davidzhou3000楼主2024/10/28 13:10
#include<bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin>>t;
    for(int i=1;i<=t;i++){
        int a,b,k;
        cin>>a>>b>>k;
        char forest[a+1][b+1];
        bool detect[a+1][b+1];
        for(int i=1;i<=a;i++){
            for(int j=1;j<=b;j++){
                detect[i][j]=0;
            }
        }
        int x0,y0,p0;
        int x,y,p;
        cin>>x0>>y0>>p0;
        x=x0;
        y=y0;
        p=p0;
        for(int i=1;i<=a;i++){
            for(int j=1;j<=b;j++){
                cin>>forest[i][j];
            }
        }
        for(int i=1;i<=k;i++){
            if(p==0){
                y++;
                if(y>b){
                   y--;
                   p=(p+1)%4;
                   continue;
                }
                if(forest[x][y]=='x'){
                   y--;
                   p=(p+1)%4;
                   continue;
                }
                detect[x][y]=1;
            }
            if(p==1){
                x++;
                if(x>a){
                   x--;
                   p=(p+1)%4;
                   continue;
                }
                if(forest[x][y]=='x'){
                   x--;
                   p=(p+1)%4;
                   continue;
                }
                detect[x][y]=1;
            }
            if(p==2){
                y--;
                if(y<1){
                   y++;
                   p=(p+1)%4;
                   continue;
                }
                if(forest[x][y]=='x'){
                   y++;
                   p=(p+1)%4;
                   continue;
                }
                detect[x][y]=1;
            }
            if(p==3){
                x--;
                if(x<1){
                   x++;
                   p=(p+1)%4;
                   continue;
                }
                if(forest[x][y]=='x'){
                   x++;
                   p=(p+1)%4;
                   continue;
                }
                detect[x][y]=1;
            }
        }
        int ans=1;
        for(int i=1;i<=a;i++){
            for(int j=1;j<=b;j++){
                ans+=detect[i][j];
            }
        }
        cout<<ans<<"\n";
    }
    return 0;
}

50分求调

题目数据带入都是对的

但是只有50分

边界写了

不知道哪里错了

2024/10/28 13:10
加载中...