zoukankan      html  css  js  c++  java
  • P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

    题目传送门

    #include <bits/stdc++.h>
    
    using namespace std;
    const int N = 10;
    char g[N][N];
    
    //北,东,南,西
    int dx[] = {-1, 0, 1, 0};
    int dy[] = {0, 1, 0, -1};
    
    int main() {
        //读入地图
        for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++)
                cin >> g[i][j];
    
        //找到牛的位置,农夫的位置
        int x1, y1, x2, y2;
        for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++) {
                if (g[i][j] == 'C') x1 = i, y1 = j;
                if (g[i][j] == 'F') x2 = i, y2 = j;
            }
    
        //方向,0:北,1:东,2:南,3:西
        int cd = 0, fd = 0; //牛的方向,农夫方向
        //假设牛和 Farmer John 一开始的行动方向都是正北(即上)
        int cnt = 0; //几分钟
        while (true) {
            //模拟牛转90度方向+走一步
            if (x1 + dx[cd] >= 10 || x1 + dx[cd] < 0
                || y1 + dy[cd] >= 10 || y1 + dy[cd] < 0
                || g[x1 + dx[cd]][y1 + dy[cd]] == '*')
                cd = (cd + 1) % 4; //换方向
            else x1 += dx[cd], y1 += dy[cd];//走一步
    
            //模拟农夫转90度方向+走一步
            if (x2 + dx[fd] >= 10 || x2 + dx[fd] < 0
                || y2 + dy[fd] >= 10 || y2 + dy[fd] < 0
                || g[x2 + dx[fd]][y2 + dy[fd]] == '*')
                fd = (fd + 1) % 4;
            else x2 += dx[fd], y2 += dy[fd];
    
            //分钟数增加
            cnt++;
            //找到啦~
            if (x1 == x2 && y1 == y2) {
                cout << cnt << endl;
                break;
            }
            //次数太多也找不到
            if (cnt > 1000000) {
                cout << 0 << endl;
                break;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    192.168.*.* 的ip无法连接Mysql数据库的解决办法
    sql server从数据库表中读取不同的日期格式
    mysql数据库命令使用
    远程软件连接虚拟机慢解决方法
    VMware设置nat上网
    虚拟机用桥接上网
    delete和truncate区别
    LNMP
    zabbix
    cacti监控
  • 原文地址:https://www.cnblogs.com/littlehb/p/15588813.html
Copyright © 2011-2022 走看看