java - 一道算法题,求指教;

查看:93
本文介绍了java - 一道算法题,求指教;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

当我输入6,8,16或者24的时候为什么不能正确输出

public class lala {
    public static void main (String[] args){
        int s;
        Scanner in =new Scanner(System.in);
        System.out.print("请输入一个正整数:");
        s=in.nextInt();
        new teee(s);
    }
}

class teee{
    int x=6,y=8;
    public teee(int s){
        System.out.print("结果:");
        int i,j,m=-1;
        for(i=0;i*x<s;i++){
            for(j=0;j*y<s;j++){
                if(s==i*x+j*y){
                    m=i+j;
                    System.out.println(m);
                    break;
                }                
            }
            if(m>0)break;
        }
        if(m<0){System.out.println(m);}
        
    }
    
}

解决方案

从代码上看,姑且将题主的代码看成求满足方程 s = 6i+8j,i的值最小的解,输出i+j。
首先很直观的可以确定,你要满足i=0或者j=0的情况的话,两个循环的判断条件应该设置为

i*x<=s 跟 j*y<=s

不然就不能得出i=0或者j=0的解,即整数倍解,也就是你说的6,16,24不准确的原因。


分割线:
关于论坛的活跃度跟论坛的问答质量感觉还是很难取舍的。
我个人一直觉得像这种问题很简单,你百度一下就有了之类的只有批评没有建议的回答或者评论没必要写出来,纯粹是给别人添堵。对于新人来说,这种问题也许并不简单,另外像这种很具体的代码逻辑问题百度是不会有的。
新人提问有不规范的地方,可以指出来,引导他采用正确的提问姿势,既可以防止他们以后再犯这种错,也不会打击到新人的积极性,保证论坛的活跃度我们的论坛可以更友好。

建议题主参考:
https://segmentfault.com/tour

我也是初来乍到,不知道segmentfault有没有新手灌水乐园,简单的问题也许可以在这里提,problem solved.

这篇关于java - 一道算法题,求指教;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆