求助,wa了一个点,但是数据下下来本地测是对的
查看原帖
求助,wa了一个点,但是数据下下来本地测是对的
10667
Hyle33ies楼主2022/10/7 13:45
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
int main(){
    char ch;
    int f[12][12];
    int fx,fy,cx,cy;
    for(int i=1;i<=10;i++)
    for(int j=1;j<=10;j++){
        cin>>ch;
        switch(ch){
            case '*':f[j][i]=0;break;
            case '.':f[j][i]=1;break;
            case 'F':fx=j;fy=i;f[j][i]=1;break;
            case 'C':cx=j;cy=i;f[j][i]=1;break;
        }
    }
    
    int fd=1,cd=1,mx=0,my=0,ans=0;
    while(ans<1600000){
        switch(fd){
            case 1:my=-1;mx=0;break;
            case 2:my=1;mx=0;break;
            case 3:mx=1;my=0;break;
            case 4:mx=-1;my=0;break;
        }
        if(f[fx+mx][fy+my]==1){
            fx+=mx;fy+=my;
        }else{
           switch(fd){
            case 1:fd=3;break;
            case 2:fd=4;break;
            case 3:fd=2;break;
            case 4:fd=1;break;
            } 
        }
        //cout<<fx<<' '<<fy<<endl;
        switch(cd){
            case 1:my=-1;mx=0;break;
            case 2:my=1;mx=0;break;
            case 3:mx=1;my=0;break;
            case 4:mx=-1;my=0;break;
        }
        if(f[cx+mx][cy+my]==1){
            cx+=mx;cy+=my;
        }else{
           switch(cd){
            case 1:cd=3;break;
            case 2:cd=4;break;
            case 3:cd=2;break;
            case 4:cd=1;break;
            } 
        }

        ans++;
        if(cx==fx&&fy==cy) break;
    }
    if(ans!=1600000)
        printf("%d\n",ans);else
        printf("0");
    return 0;
}

RT,WA了第七个点,数据输入是

*...*....*
.......*..
.*...*.F..
.*........
....*..**.
*.......*.
......**..
*..C......
..*...*..*
*.....*.*.

我的输出和答案输出都是16,但是提交评测之后提示Wrong Answer.wrong answer On line 1 column 1, read 0, expected 1.

2022/10/7 13:45
加载中...