逻辑题

数学逻辑题

徘徊边缘 提交于 2020-01-12 08:25:04
数学逻辑题对我来说是一个大坑,脑袋根本转不过来。。。 1. 有无限的水源,一个5L无刻度桶和一个7L无刻度桶,则只利用这两个无刻度桶,将不能获得()L水 均可获得。 2:7L装满,倒满5L,剩2L 3:5L装满,倒7L;再装满5L,倒满7L,剩3L 6:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,再倒满7L,剩1L;倒给7L,5升装满,共6L。 8:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,共8L 11:7L装满,倒满5L,剩2L;倒给5L,7L装满,再倒满5L,剩4L;倒给5L,7L倒满,共11L 有解答是只要有满足公式 5*a+7*b=.. 可线性表达即可,待考证。 来源: https://www.cnblogs.com/bounceFront/p/5497243.html

面试笔记---逻辑题:倒水问题

匿名 (未验证) 提交于 2019-12-02 21:53:32
   把面试的逻辑题的倒水问题计算了一下最优解的问题: /** * 算法及原理 * */ 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}; /