求解

题意:
        一天,牛妹找牛牛做一个游戏,牛妹给牛牛写了一个数字n,然后又给自己写了一个数字m,她希望牛牛能执行最少的操作将他的数字转化成自己的。
操作共有三种,如下:
        1.在当前数字的基础上加一,如:4转化为5
        2.在当前数字的基础上减一,如:4转化为3
        3.将当前数字变成它的平方,如:4转化为16
        你能帮牛牛解决这个问题吗?

输入
给定n,m,分别表示牛牛和牛妹的数字。

输出:
返回最少需要的操作数。

这题这么些行吗,测试用例只通过20%,没想出哪里问题啊,求指点迷经

import java.util.*;
 
 
public class Solution {
    /**
     * 返回最后要输出的答案
     * @param n int整型 表示牛牛的数字
     * @param m int整型 表示牛妹的数字
     * @return int整型
     */
    int summ=0;
    public int solve (int n, int m) {
        // write code here
         
             
     
        sum(m,n);
        return summ;
         
         
         
         
    }
     
    public  void sum (int m,int n) {
         
        if (n==m) {
           
            return;
        }
        else if (Math.abs(n*n-m)<Math.abs(m-n)) {
             
            sum(m, n*n);
            summ++;
        }else {
            summ+=Math.abs(m-n);
            return;
        }
         
         
    }
         
     
}



全部评论
如果m=16,n=3 只要(3+1)^2两步 但按你的思路是3^2+7
点赞 回复
分享
发布于 2020-07-10 02:58

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务