lanqiao OJ 230 调手表

简介: lanqiao OJ 230 调手表

1.调手表 - 蓝桥云课 (lanqiao.cn)

这个题是bfs的应用,我们平常bfs就上下左右四个方向走,这个就是要么+1要么+k,这两个选择,当v[i]全部被记录过的时候,我们的队列就会为空,然后就会退出bfs,这样我们就可以的到从一个数其他所有的数的调整个数,取这个调整个数的数组的最大值就是我们要找的最大值。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
 
using namespace std ;
const int N = 1e5+10 ;
queue<int> q ;
int n , k ;
int ans ;
int cnt ;
int d[2] ;
bool v[N] ;
int dis[N] ;//走到每个数的调整个数
void bfs(){
  q.push(0) ;
  while(!q.empty()){
    int now = q.front() ;
    q.pop() ;
    for(int i = 0 ; i < 2 ; i ++){//遍历这两个方向
      int tx = (now + d[i]) % n ;
      if(!v[tx]){
        v[tx] = 1 ;
        dis[tx] = dis[now] + 1 ;
        q.push(tx) ;
      }
    }
  }
  
}
int main(){
  cin >> n >> k ;
  d[0] = 1 ; d[1] = k ;
  memset(v,0,sizeof(v)) ;
  v[0] = 1 ;//第一个数走过了,不用调
  bfs() ;
  
  for(int i = 0 ; i < n ; i ++) ans = max(ans,dis[i]) ;//找这个数组的最大值
  cout << ans << endl ;
  return 0 ;
}
相关文章
|
5月前
|
容器
leetcode-407:接雨水 II
leetcode-407:接雨水 II
67 0
|
5月前
|
图计算 索引
leetcode-42:接雨水
leetcode-42:接雨水
51 0
lanqiao OJ 525 传球游戏
lanqiao OJ 525 传球游戏
lanqiao OJ 182 小朋友崇拜圈
lanqiao OJ 182 小朋友崇拜圈
lanqiao OJ 1447 砝码称重
lanqiao OJ 1447 砝码称重
lanqiao OJ 89 路径之谜
lanqiao OJ 89 路径之谜
lanqiao OJ 229 迷宫与陷阱
lanqiao OJ 229 迷宫与陷阱
|
2天前
|
算法 图计算 C++
Leetcode第42题(接雨水)
这篇文章介绍了解决LeetCode第42题“接雨水”问题的不同算法,包括双指针法和单调栈法,并提供了C++的代码实现。
9 0
Leetcode第42题(接雨水)
lanqiao OJ 1505 剪邮票
lanqiao OJ 1505 剪邮票
|
1天前
|
机器人
lanqiao OJ 118 机器人塔
lanqiao OJ 118 机器人塔