名企真题-警察抓小偷游戏——数学

本文介绍了如何解决一个关于警察与小偷在N角星地图上移动的问题,警察每步走2格,小偷奇数轮走1格,偶数轮走2格。当警察移动到小偷位置时捕获小偷。给定输入示例后,展示了Java代码实现来计算警察抓住小偷所需的最少移动次数。通过分析和计算,程序得出警察在7步后可以抓住小偷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

如下图,地图由凸点和凹点交替组成的N角星形状,警察和小愉初始在地图的凸点位置,每轮小偷和警察依次移动(小偷先走),移动方向固定为逆时针移动小娟C202
警察每次走2步,小愉奇数轮走1步,偶数轮走2步,小偷移动到出发点位置时停走一轮。
请编写一个程序,找出警察抓住小愉的最少移动次数。

说明:只有警察移动时,且移动的终点刚好与小偷位置重合则抓成功; 

求解思路

输入输出示例

样例1

输入:5 1 2

输出:7

解释:小偷移动办步到达凸点3的位置,警察移动7步也到的凸点3的位置。

代码

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt()*2;
        int i = (sc.nextInt()-1)*2;//jingcha
        int j = (sc.nextInt()-1)*2;//xiaotou
        int count = 0;
        int tag = 0;//0 
        int tag2 = 0;
        while(i!=j){
            if(tag2 == 1 && j == 0){
                tag2 = 0;
                continue;
            }
            if(tag == 0){
                j = (j+1)%n;
                tag = 1;
            }else {
                j = (j + 2)%n;
                tag = 0;
            }
            if(j == 0){
                tag2 = 1;
            }
            i = (i+2)%n;
            count++;

        }
        System.out.println(count);


    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值