Kmonosis 2021-10-25 15:09 采纳率: 0%
浏览 28

P1518:判断条件不同,竟然会影响AC?!

https://blog.csdn.net/SillyGOAT/article/details/120951886

详细见我上方的博客!

这样ac了:

#include<stdio.h>


struct location{
    int row;
    int column;
    int direction;
}farmer,cow;

int main()
{
    char a[12][12];
    int i,j;
    for(i=0;i<10;i++)
    {
        gets(a[i]);
    }
    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            if(a[i][j]=='F')
            {
                farmer.row=i;
                farmer.column=j;
                farmer.direction=1;
                a[i][j]='.';
            }
            if(a[i][j]=='C')
            {
                cow.row=i;
                cow.column=j;
                cow.direction=1;
                a[i][j]='.';
            }
        }
    }
    int cnt=0;
    while(1)
    {
    
        if(farmer.direction%4==1)
        {
            if(farmer.row-1!=-1&&a[farmer.row-1][farmer.column]=='.')
            {
                farmer.row--;
            }else
            {
                farmer.direction++;
            }
        }else if(farmer.direction%4==2)
        {
            if(farmer.column+1!=10&&a[farmer.row][farmer.column+1]=='.')
            {
                farmer.column++;
            }else
            {
                farmer.direction++;
            }
        }else if(farmer.direction%4==3)
        {
            if(farmer.row-1!=10&&a[farmer.row+1][farmer.column]=='.')
            {
                farmer.row++;
            }else
            {
                farmer.direction++;
            }
        }else if(farmer.direction%4==0)
        {
            if(farmer.column-1!=-1&&a[farmer.row][farmer.column-1]=='.')
            {
                farmer.column--;
            }else
            {
                farmer.direction++;
            }
        }
        
        if(cow.direction%4==1)
        {
            if(cow.row-1!=-1&&a[cow.row-1][cow.column]=='.')
            {
                cow.row--;
            }else
            {
                cow.direction++;
            }
        }else    if(cow.direction%4==2)
        {
            if(cow.column+1!=10&&a[cow.row][cow.column+1]=='.')
            {
                cow.column++;
            }else
            {
                cow.direction++;
            }
        }else    if(cow.direction%4==3)
        {
            if(cow.row+1!=10&&a[cow.row+1][cow.column]=='.')
            {
                cow.row++;
            }else
            {
                cow.direction++;
            }
        }else if(cow.direction%4==0)
        {
            if(cow.column-1!=-1&&a[cow.row][cow.column-1]=='.')
            {
                cow.column--;
            }else
            {
                cow.direction++;
            }
        }    
        if(farmer.row==cow.row&&farmer.column==cow.column)
        {
            cnt++;
            break;
        }else
        {
            cnt++;
        }
        if(cnt>100000)
        {
            printf("0");
            return 0;
        }
        
    }
    printf("%d",cnt);
    return 0;
}

然而这样:

#include<stdio.h>


struct location{
    int row;
    int column;
    int direction;
}farmer,cow;

int main()
{
    char a[12][13];
    int i,j;
    for(i=0;i<10;i++)
    {
        gets(a[i]);
    }
    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            if(a[i][j]=='F')
            {
                farmer.row=i;
                farmer.column=j;
                farmer.direction=1;
            }
            if(a[i][j]=='C')
            {
                cow.row=i;
                cow.column=j;
                cow.direction=1;
            }
        }
    }
    int cnt=0;
    while(1)
    {
    
        if(farmer.direction%4==1)
        {
            if(farmer.row-1!=-1&&a[farmer.row-1][farmer.column]!='*')
            {
                farmer.row--;
            }else
            {
                farmer.direction++;
            }
        }else if(farmer.direction%4==2)
        {
            if(farmer.column+1!=10&&a[farmer.row][farmer.column+1]!='*')
            {
                farmer.column++;
            }else
            {
                farmer.direction++;
            }
        }else if(farmer.direction%4==3)
        {
            if(farmer.row-1!=10&&a[farmer.row+1][farmer.column]!='*')
            {
                farmer.row++;
            }else
            {
                farmer.direction++;
            }
        }else if(farmer.direction%4==0)
        {
            if(farmer.column-1!=-1&&a[farmer.row][farmer.column-1]!='*')
            {
                farmer.column--;
            }else
            {
                farmer.direction++;
            }
        }
        
        if(cow.direction%4==1)
        {
            if(cow.row-1!=-1&&a[cow.row-1][cow.column]!='*')
            {
                cow.row--;
            }else
            {
                cow.direction++;
            }
        }else    if(cow.direction%4==2)
        {
            if(cow.column+1!=10&&a[cow.row][cow.column+1]!='*')
            {
                cow.column++;
            }else
            {
                cow.direction++;
            }
        }else    if(cow.direction%4==3)
        {
            if(cow.row+1!=10&&a[cow.row+1][cow.column]!='*')
            {
                cow.row++;
            }else
            {
                cow.direction++;
            }
        }else if(cow.direction%4==0)
        {
            if(cow.column-1!=-1&&a[cow.row][cow.column-1]!='*')
            {
                cow.column--;
            }else
            {
                cow.direction++;
            }
        }    
        if(farmer.row==cow.row&&farmer.column==cow.column)
        {
            cnt++;
            break;
        }else
        {
            cnt++;
        }
        if(cnt>100000)
        {
            printf("0");
            return 0;
        }
        
    }
    printf("%d",cnt);
    return 0;
}

就是会卡在第四个测试点:

img

区别只有判断是否可走的条件上:(判断 . 的话自然要将初始位置改为 . )

if(cow.column-1!=-1&&a[cow.row][cow.column-1]!='*')
            {
                cow.column--;
            }else
            {
                cow.direction++;
            }

if(farmer.row-1!=-1&&a[farmer.row-1][farmer.column]=='.')
            {
                farmer.row--;
            }else
            {
                farmer.direction++;
            }

  • 写回答

1条回答 默认 最新

  • CSDN专家-Time 2021-10-25 15:15
    关注

    !='*' 还可能是其他值啊。
    如果是字母你不是判断错了?

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 10月25日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表