求x到y的最少计算次数
不太清楚为什么会是BFS和DFS
哦,这样,从x出发,每次“+1”、“-1”、“*2”三条路径
广度优先,一层一层往下走,同时一层一层向下构造,得到第一个等于y的,层数就是结果
public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); String[] s = scanner.next().split(","); int x = Integer.parseInt(s[0]); int y = Integer.parseInt(s[1]); Queue<Integer> que = new ArrayDeque<>(); int level = -1, size; que.add(x); while (!que.isEmpty()) { level++; size = que.size(); for (int i = 0; i < size; i++) { int temp = que.peek(); que.remove(); if (temp == y) { que.clear(); break; } if (temp + 1 <= 100) que.add(temp + 1); if (temp - 1 >= -100) que.add(temp - 1); if (2 * temp >= -100 && 2 * temp <= 100) que.add(2 * temp); } } System.out.println(level); }
就是不喜欢用Java做题,怎么看都不优雅
但是我尝试-100,100
这个测试用例的时候就直接OOM了
考虑动态规划?
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/16990136.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步