两只多姆牛,模拟

#include <bits/stdc++.h>
using namespace std;
char mp[11][11];
int xa,ya,xb,yb;
int lxa,lya,lxb,lyb;
int fa = 1,fb = 1;
int ans = 0;

void yda(){
    if(fa==1){//北
        lxa = xa - 1;
        lya = ya;
    }
    if(fa==2){//东
        lxa = xa;
        lya = ya + 1;
    }
    if(fa==3){//南
        lxa = xa+1;
        lya = ya ;
    }
    if(fa==4){//西
        lxa = xa;
        lya = ya - 1;
    }
    if(lxa>=1 &amp;&amp; lya >=1 &amp;&amp; lya<=10 &amp;&amp; lxa <= 10&amp;&amp; mp[lxa][lya] == '.'){
        xa = lxa;
        ya = lya;
    }else{
        fa++;//方向改变
        if(fa>4){
            fa = 1;
        }
    }
}
void ydb(){
    //平移区
    if ( fb == 1 ){
        lxb = xb - 1 ;
        lyb = yb ;
    }
    if ( fb == 2 ){
        lxb = xb ;
        lyb = yb + 1 ;
    }
    if ( fb == 3 ){
        lxb = xb + 1 ;
        lyb = yb ;
    }
    if ( fb == 4 ){
        lxb = xb ;
        lyb = yb - 1 ;
    }
    //判定区:
    if ( lxb >= 1 &amp;&amp; lyb >= 1 &amp;&amp; lyb <= 10 &amp;&amp; lxb <= 10 &amp;&amp; mp[lxb][lyb] == '.' ){
        xb = lxb ;
        yb = lyb ;
    }
    else{
        fb++ ;
        if ( fb > 4 ){
            fb = 1 ;
        }
    }
}
int main(){
    for(int i = 1;i<=10;i++){
        for(int j = 1;j<=10;j++){
            cin >> mp[i][j];
            if(mp[i][j]=='F'){
                xa=i;
                ya=j;
                mp[i][j] = '.';
            }
            if(mp[i][j]=='C'){
                xb=i;
                yb=j;
                mp[i][j] = '.';
            }
        }
    }
    while(1){
        yda();
        ydb();
        ans++;
        if(ans>1000){
            cout<<0;
            return 0;
        }
        if(xa==xb&amp;&amp;ya==yb){
            cout<<ans;
            return 0;
        }
    }
}
全部评论

相关推荐

醉蟀:你不干有的是人干
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务