C# CodinGame记录(2)--SHADOWS OF THE KNIGHT - EPISODE 1

这题是二分法

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Player
{
    static void Main(string[] args)
    {
        string[] inputs;
        inputs = Console.ReadLine().Split(' ');
        int W = int.Parse(inputs[0]); // width of the building.
        int H = int.Parse(inputs[1]); // height of the building.
        int N = int.Parse(Console.ReadLine()); // maximum number of turns before game over.
        inputs = Console.ReadLine().Split(' ');
        int X0 = int.Parse(inputs[0]);
        int Y0 = int.Parse(inputs[1]);
        int Xmin =0;
        int Ymin =0;
        int Xmax =W-1;
        int Ymax =H-1;
        // game loop
        while (true)
        {
            string bombDir = Console.ReadLine(); // the direction of the bombs from batman's current location (U, UR, R, DR, D, DL, L or UL)
            // Write an action using Console.WriteLine()
            // To debug: Console.Error.WriteLine("Debug messages...");         
            switch(bombDir){
                case "U":Ymax = Y0-1;Y0 = ((Ymax+Ymin)/2);break;
                case "D":Ymin = Y0+1;Y0 = ((Ymax+Ymin)/2);break;
                case "L":Xmax = X0-1;X0 = ((Xmax+Xmin)/2);break;
                case "R":Xmin = X0+1;X0 = ((Xmax+Xmin)/2);break;
                case "UL":Ymax = Y0-1;Y0 = ((Ymax+Ymin)/2);
                          Xmax = X0-1;X0 = ((Xmax+Xmin)/2);break;
                case "UR":Ymax = Y0-1;Y0 = ((Ymax+Ymin)/2);
                          Xmin = X0+1;X0 = ((Xmax+Xmin)/2);break;
                case "DL":Ymin = Y0+1;Y0 = ((Ymax+Ymin)/2);
                          Xmax = X0-1;X0 = ((Xmax+Xmin)/2);break;
                case "DR":Ymin = Y0+1;Y0 = ((Ymax+Ymin)/2);
                          Xmin = X0+1;X0 = ((Xmax+Xmin)/2);break;
            }            
            // the location of the next window Batman should jump to.
            Console.WriteLine("{0} {1}",X0,Y0);
        }
    }
}

先判断目标坐标在所在坐标的哪个方向

设定max值跟min值

然后在目标坐标跟所在坐标中间砍一刀

再判断目标坐标在所在坐标的哪个方向

循环设定max和min值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值