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 ;
}
目录
相关文章
|
4月前
lanqiao OJ 182 小朋友崇拜圈
lanqiao OJ 182 小朋友崇拜圈
45 2
|
4月前
lanqiao OJ 98 包子凑数
lanqiao OJ 98 包子凑数
18 0
|
4月前
lanqiao OJ 1505 剪邮票
lanqiao OJ 1505 剪邮票
38 0
|
4月前
lanqiao OJ 525 传球游戏
lanqiao OJ 525 传球游戏
36 2
|
9月前
|
存储
【期末不挂科-单片机考前速过系列P3】(第三章:13题MOV&MOVX&MOVC&数码管速过)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P3】(第三章:13题MOV&MOVX&MOVC&数码管速过)经典例题盘点(带图解析)
|
4月前
lanqiao OJ 22年省赛 扫雷
lanqiao OJ 22年省赛 扫雷
42 1
|
4月前
lanqiao OJ 364 跳石头
lanqiao OJ 364 跳石头
45 6
|
4月前
lanqiao OJ 131 生命之树
lanqiao OJ 131 生命之树
40 0
|
4月前
lanqiao oj 131 生命之树
lanqiao oj 131 生命之树
36 0
|
4月前
lanqiao OJ 网络寻路
lanqiao OJ 网络寻路
37 0

热门文章

最新文章