面试笔记---逻辑题:倒水问题
程序员文章站
2022-10-06 19:43:27
把面试的逻辑题的倒水问题计算了一下最优解的问题: 测试例子: 测试结果: 如果不需要求两种方式中最优解的话,可以不用这么麻烦: public class dsUtil { /** * 算法及原理 * */ public void rsa(int a,int b,int c) { /** * 逻辑题: ......
把面试的逻辑题的倒水问题计算了一下最优解的问题:
/** * 算法及原理 * */ public int[] rsa(int[] data) { /** * 逻辑题:有两个水杯,一个是aL一个是bL,水可以随便用,怎么得到cL * 即用满进满出的原则,要么是aL满倒向bL,要么bL满倒向aL循环得出 * 即 满足:ax-by=c/bx-ay=c * 关于每个水杯满了的次数x/y默认设为不大于100 * */ int a=data[0]; int b=data[1]; int c=data[2]; int sum=0; for(int x=0;x<100;x++) { for(int y=0;y<100;y++) { if(a*x-b*y==c) { sum=x+y; //返回a,b,x,y,sum int [] datas= {a,b,x,y,sum}; return datas; } } } return data; } /** * 调用方法, * 因为有两种可能,即调用两次,第二次把a.b顺序交换赋值 * */ public void use(int[] data) { int a=data[0]; int b=data[1]; int c=data[2]; //交换后调用 int[] data1= {a,b,c}; int[] data2= {b,a,c}; //获取返回的数组 int[] s1 =rsa(data1); int[] s2=rsa(data2); //判断总步数,寻找最优解 if(s1[4]<s2[4]) { String message=s1[0]+"升倒"+s1[1]+"升:x="+s1[2]+",y="+s1[3]; System.out.println(message); }else { String message=s2[0]+"升倒"+s2[1]+"升:x="+s2[2]+",y="+s2[3]; System.out.println(message); } } }
测试例子:
public static void main(String[] args) { dsUtils test=new dsUtils(); //传递两个杯子的容量,以及要取的容量 int[] data= {11,7,2}; test.use(data); }
测试结果:
如果不需要求两种方式中最优解的话,可以不用这么麻烦:
public class dsUtil { /** * 算法及原理 * */ public void rsa(int a,int b,int c) { /** * 逻辑题:有两个水杯,一个是aL一个是bL,水可以随便用,怎么得到cL * 即用满进满出的原则,要么是aL满倒向bL,要么bL满倒向aL循环得出 * 即 满足:ax-by=c/bx-ay=c * 关于每个水杯满了的次数x/y默认设为不大于100 * */ for(int x=0;x<100;x++) { for(int y=0;y<100;y++) { if(a*x-b*y==c) { String message=a+"升倒"+b+"升:x="+x+",y="+y; System.out.println(message); return; } } } } /** * 调用方法, * 因为有两种可能,即调用两次,第二次把a.b顺序交换赋值 * */ public void use(int a,int b,int c) { rsa(a,b,c); rsa(b,a,c); } }
测试结果:
参考:https://www.cnblogs.com/j-star/p/7127190.html
上一篇: C#开源框架(转载)
推荐阅读
-
【前端刷题笔记02】字节跳动2019面试题-一只想做全栈的猫-SegmentFault思否
-
面试笔记---逻辑题:倒水问题
-
【常见笔试面试算法题12续集一】动态规划算法案例1台阶问题练习题
-
C练题笔记之:Leetcode-面试题 17.04. 消失的数字
-
【前端刷题笔记02】字节跳动2019面试题-一只想做全栈的猫-SegmentFault思否
-
烧脑题,有一个程序循环逻辑问题,急在线等
-
java面试第一次问题,时间没把握好,有点紧张,其实都是很简单的题,笔试感觉良好,面试可能回答不太满意,继续加油,建议初学者把基础学扎实,葵花宝典你值得拥有
-
面试笔记---逻辑题:倒水问题
-
程序员代码面试指南刷题--19.容器盛水问题