模拟 3897: Catch the Mouse

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=3897

猫捉老鼠

猫和老鼠一直走,直到碰壁或出界,则右转

技巧(方向%4)

复制代码
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
char mp[15][15];
int ci,cj,mi,mj,ans=0,fm=0,fc=0;
int dir[4][2]={-1,0,0,1,1,0,0,-1};
void next()
{
    mi+=dir[fm][0];
    mj+=dir[fm][1];
    if(mi<1||mi>10||mj<1||mj>10||mp[mi][mj]=='*'){
        mi-=dir[fm][0];
        mj-=dir[fm][1];
        fm=(fm+1)%4;
    }
    ci+=dir[fc][0];
    cj+=dir[fc][1];
    if(ci<1||ci>10||cj<1||cj>10||mp[ci][cj]=='*'){
        ci-=dir[fc][0];
        cj-=dir[fc][1];
        fc=(fc+1)%4;
    }
}
void solve()
{
    while(1){
        if(ans==1e6)break;
        if(mi==ci&&mj==cj)break;
        next();
        ans++;
    }
}
int main()
{
    for(int i=1;i<=10;i++){
        for(int j=1;j<=10;j++){
            scanf("%c",&mp[i][j]);
            if(mp[i][j]=='M')mi=i,mj=j;
            else if(mp[i][j]=='C')ci=i,cj=j;
        }
        getchar();
    }
    solve();
    printf("%d\n",ans==1e6?0:ans);
    return 0;
}
View Code
复制代码

 

posted @   -第4题-  阅读(192)  评论(0编辑  收藏  举报
编辑推荐:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf
历史上的今天:
2019-05-15 4971:Gift
点击右上角即可分享
微信分享提示