爆0求助
查看原帖
爆0求助
838891
ccfwantsmoremoney楼主2025/2/4 15:20

本地测试过测试点1,3,4,但是爆0了,求助谢谢大神们。。。

#include<bits/stdc++.h>
using namespace std;
char mp[1005][1005];
int T,t,n,m,k,x,y,d,i,ct,flag;
int main()
{
    scanf("%lld\n",&T);
    for(t=0;t<T;++t)
    {
        ct=1;
        scanf("%lld %lld %lld\n",&n,&m,&k);
        scanf("%lld %lld %lld\n",&x,&y,&d);
        for(i=1;i<=n;++i)
        {
            if(i==n&&t==T-1)
            {
                scanf("%s",&mp[i][1]);
                break;
            }

            scanf("%s\n",&mp[i][1]);
        }
        mp[x][y]='o';

        for(int k0=0;k0<k;++k0)
        {
            flag=1;
            if(d==0)
            {
                if(y+1<=m)
                {
                    if(mp[x][y+1]!='x')
                    {
                        y=y+1;
                        ct+=(mp[x][y]=='.');
                        mp[x][y]='o';
                        flag=0;
                        //printf("直行到%d,%d\n",x,y);
                    }
                }
                if(flag)
                {
                    d=(d+1)%4;
                    //printf("右转,目前%d\n",d);
                    continue;
                }
            }
            if(d==1)
            {
                if(x+1<=n)
                {
                    if(mp[x+1][y]!='x')
                    {
                        x=x+1;
                        ct+=(mp[x][y]=='.');
                        mp[x][y]='o';
                        flag=0;
                        //printf("直行到%d,%d\n",x,y);
                    }
                }
                if(flag)
                {
                    d=(d+1)%4;
                    //printf("右转,目前%d\n",d);
                    continue;
                }
            }
            if(d==2)
            {
                if(y-1>0)
                {
                    if(mp[x][y-1]!='x')
                    {
                        y=y-1;
                        ct+=(mp[x][y]=='.');
                        mp[x][y]='o';
                        flag=0;
                        //printf("直行到%d,%d\n",x,y);
                    }
                }
                if(flag)
                {
                    d=(d+1)%4;
                    //printf("右转,目前%d\n",d);
                    continue;
                }
            }
            if(d==3)
            {
                if(x-1>0)
                {
                    if(mp[x-1][y]!='x')
                    {
                        x=x-1;
                        ct+=(mp[x][y]=='.');
                        mp[x][y]='o';
                        flag=0;
                        //printf("直行到%d,%d\n",x,y);
                    }
                }
                if(flag)
                {
                    d=(d+1)%4;
                    //printf("右转,目前%d\n",d);
                    continue;
                }

            }
        }
        printf("%d\n",ct);
    /*
    for(int aa=0;aa<n;aa++)
    {
        for(int bb=0;bb<m;bb++)
        {
            printf("%c",mp[aa][bb]);
        }
        printf("\n");
        */
    }

    return 0;

}

2025/2/4 15:20
加载中...