蓝桥杯真题:调手表(Java)
Posted 爱敲代码的三毛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯真题:调手表(Java)相关的知识,希望对你有一定的参考价值。
题目
思路
- 从0开始搜索,如果当前时间+1或者+k大于等于n就要对n取余,所以每次加都对n取余
- 每次相加的结果都用set去重,如果是第一次出现就加入队列继续相加
- 当队列为空的时候,就是从一个时间到另一时间的最多要按的次数,这里是从0开始计数的所以结果要减一
代码
import java.util.*;
public class Main
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
Set<Integer> set = new HashSet<>();
Queue<Integer> queue = new LinkedList<>();
queue.offer(0);
set.add(0);
int count = 0;
while (!queue.isEmpty())
int size = queue.size();
while (size-- != 0)
int tmp = (queue.peek()+1)%n;
if (set.add(tmp))
queue.offer(tmp);
tmp = (queue.peek()+k)%n;
if (set.add(tmp))
queue.offer(tmp);
queue.poll();
count++;
System.out.println(count-1);
sc.close();
以上是关于蓝桥杯真题:调手表(Java)的主要内容,如果未能解决你的问题,请参考以下文章