POJ3278解题报告
2016-05-01 11:12
295 查看
五一快乐!么么
POJ3278很难找到原题的中文翻译,都是给的题目大意哎!我是用java写的。BFS搜索,
有缺点望指出来。thaks。。
POJ3278很难找到原题的中文翻译,都是给的题目大意哎!我是用java写的。BFS搜索,
有缺点望指出来。thaks。。
import java.io.BufferedInputStream; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; /*POJ3278 * 大致题意: 给定两个整数n和k 通过 n+1或n-1 或n*2 这3种操作,使得n==k 输出最少的操作次数 * * */ public class Main { static int MAX = 200000; public static void main(String args[]) { Scanner sc = new Scanner(new BufferedInputStream(System.in)); int n = sc.nextInt(); int k = sc.nextInt(); System.out.println(bfs(n, k)); } private static int bfs(int n, int k) { // TODO Auto-generated method stub Queue<Integer> queue = new LinkedList<Integer>(); queue.offer(n); if (n == k) { return 0; } int[] min = new int[MAX + 5]; boolean[] visited = new boolean[MAX + 5]; visited = true; while (!queue.isEmpty()) { int next = queue.remove(); for (int i = 0; i < 3; i++) { int temp = next; if (i == 0) { temp++; } else if (i == 1) { temp--; } else if (i == 2) { temp *= 2; } if (!visited[temp]) { queue.offer(temp); visited[temp] = true; min[temp] = min[next] + 1; } if (temp == k) { return min[k]; } } } return 0; } }
相关文章推荐
- 布尔代数
- 链表结点的删除
- MySql的使用简介
- Visual Studio 统计代码行数
- sublime常用的插件
- 深入分析_linux_spinlock_实现机制
- uva 5734 Shape Number
- VISUAL SVN安装 及客户端使用
- 放棋子
- brew的新网址
- BZOJ4537: [Hnoi2016]最小公倍数
- 【SPOJ-GONE】G-One Numbers【数位DP】【记忆化搜索】【质数筛】
- 极简代码(四)—— 分段函数(sinc)的实现
- 40-3Sum Closest
- 用VisualSVN做项目版本控制
- POV-Ray简单上手教程(学习笔记)(一)
- 2016年3月23日作业(项目进度管理、项目成本管理)
- 破解MyEclipse的方法
- html 物资 jQuery下拉框select美化
- 263. Ugly Number