一维数组的移动
来源:互联网 发布:淘宝信誉提升 编辑:程序博客网 时间:2024/05/01 09:14
import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;class points {int x, y;public points(int x, int y) {this.x = x;this.y = y;}}public class Main {static int b,n,min;static Queue<points> q = new LinkedList<points>();static int[] vis = new int[5001];static void bfs(int x,int y){vis[x]=1;q.add(new points(x,y));while(!q.isEmpty()){points p = q.poll();if(p.x<0 || p.x>n)return;if(p.x==b)min= p.y;if(p.x+1>=0 && p.x+1<=n && vis[p.x+1]==0){vis[p.x+1]=1;q.add(new points(p.x+1,p.y+1));}if(p.x-1>=0 && p.x-1<=n && vis[p.x-1]==0){vis[p.x-1]=1;q.add(new points(p.x-1,p.y+1));}if(p.x*2>=0 && p.x*2<=n && vis[2*p.x]==0){vis[p.x*2]=1;q.add(new points(p.x*2,p.y+1));}}}//dfs超栈/*static void dfs(int i,int sum){if(sum>n || sum<0)return;if(b==sum){min=Math.min(min, i);return;}if(sum+1>=0 && sum+1<=n)dfs(i+1,sum+1);if(sum-1>=0 && sum-1<=n)dfs(i+1,sum-1);if(sum*2>=0 && sum*2<=n)dfs(i+1,sum*2);}*/public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();int a = sc.nextInt();b = sc.nextInt();bfs(a,0);System.out.println(min);}}
0 0
- 一维数组的移动
- 一维数组的遍历、添加、删除、位置移动的实例
- 数组,指针的移动
- 数组的循环移动
- bfs:一维坐标的移动
- js 的一维数组,二维数组
- 数组的特性:一维数组
- 一、移动的操作
- 一维数组的使用
- 一维数组的遍历
- 一维的树状数组
- 一维数组的探索
- 一维数组的初始化
- 一维数组的引用
- 一维数组的地址
- 一维数组的地址
- 数据结构复习--数组的移动
- 数据结构复习--数组的移动
- Docker下centos6 + mha全记录
- SpringMVC和Mybatis的整合
- 简单读取dataSource.properties配置文件
- 动态规划粗浅理解及LCS思路
- From Word Embeddings To Document Distances
- 一维数组的移动
- git 客户端解决冲突文件
- Failed to read candidate component class: file [F:\eclipse neon\.metadata\.plugins\org.eclipse.wst.s
- Find All Numbers Disappeared in an Array
- 六、简单查询、条件查询、排序
- 对fork()函数的初步认识
- 【taotao】图片服务器的搭建
- xdctf-pwn200
- Python+Selenium练习篇之19-断言页面标题