为啥输入不能用getchar()啊
查看原帖
为啥输入不能用getchar()啊
1405376
Cphi_楼主2024/7/28 12:52

求助:

本地能过,oj上六个WA四个RE 参考题解后仅将输入改为cin后就AC了(刚注册看不到评测用数据)

求大佬解惑

这里单独贴出输入部分代码(其余部分不影响AC),篇末附上完整代码

(见鬼,怎么会呢

更改前(getchar()):

char m[20][20];
int dirx[4]={-1,0,1,0},diry[4]={0,1,0,-1};
struct obj
{
    int x;
    int y;
    int side;
}f={},c={};//前置定义部分

 for(int i=1;i<=10;i++)
    {
        for(int j=1;j<=10;j++)
        {
            m[i][j]=getchar();
            if(m[i][j]=='F')
            {
                f.x=i;
                f.y=j;
                f.side=0;
                m[i][j]='.';
            }
            if(m[i][j]=='C')
            {
                c.x=i;
                c.y=j;
                c.side=0;
                m[i][j]='.';
            }
        }
        getchar();
    }

更改后(cin>>)

for(int i=1;i<=10;i++)
    {
        for(int j=1;j<=10;j++)
        {
            cin>>m[i][j];
            if(m[i][j]=='F')
            {
                f.x=i;
                f.y=j;
                f.side=0;
                m[i][j]='.';
            }
            if(m[i][j]=='C')
            {
                c.x=i;
                c.y=j;
                c.side=0;
                m[i][j]='.';
            }
        }
    }
#include<bits/stdc++.h>
using namespace std;
char m[20][20];
int dirx[4]={-1,0,1,0},diry[4]={0,1,0,-1};
struct obj
{
    int x;
    int y;
    int side;
}f={},c={};
obj mov(obj a)
{
    obj o=a;
    if(m[o.x+dirx[o.side]][o.y+diry[o.side]]=='*')
    {
        o.side++;
        o.side%=4;
    }
    else
    {
        o.x+=dirx[o.side];
        o.y+=diry[o.side];
    }
    return o;
}
int main()
{

    for(int i=0;i<=11;i++)
    {
        m[i][0]='*';
        m[i][11]='*';
        m[0][i]='*';
        m[11][i]='*';
    }
    for(int i=1;i<=10;i++)
    {
        for(int j=1;j<=10;j++)
        {
            m[i][j]=getchar();
            if(m[i][j]=='F')
            {
                f.x=i;
                f.y=j;
                f.side=0;
                m[i][j]='.';
            }
            if(m[i][j]=='C')
            {
                c.x=i;
                c.y=j;
                c.side=0;
                m[i][j]='.';
            }
        }
        getchar();
    }
    int t=0,temp=0;
    while(temp<=1000)
    {
        f=mov(f);
        c=mov(c);
        t++;

        if((f.x==c.x)&&(f.y==c.y))
        {
            cout<<t;
            return 0;
        }
        temp++;
    }
    cout<<0;
    return 0;
}


2024/7/28 12:52
加载中...