java实现分酒(泊松分酒)

来源:互联网 发布:linux打包压缩文件夹 编辑:程序博客网 时间:2024/04/29 13:40
写在前面:
泊松分酒:
法国著名数学家波瓦松在青年时代研究过一个有趣的数学问题:假设某人有12品脱的啤酒一瓶,想从中倒出六品脱,但是恰巧身边没有6品脱的容器,仅有一个8品脱和一个5品脱的容器,怎样倒才能将啤酒分为两个6品脱呢?现在,请你设计一个程序,可以根据输入的满瓶容量(a),和两个空瓶的容量(b和c)对倒,获得最终需要的容量(d)。
上周考笔试,有道题可能出现,想了N久也不会。最后考试中虽然没考它,但是突然就想明白了。
Java代码 复制代码 收藏代码
  1. /**  
  2.  * @discription 酒瓶是8升酒,有两个杯,分别为3升和5升,现在想得到两杯4升的酒。 
  3.  * 肿么分这瓶酒啊?  
  4.  */  
  5. void text(){   
  6.     fenjiu(8,5,3,4);   
  7.                fenjiu(12,8,5,6);   
  8. }  

Java代码 复制代码 收藏代码
  1. /***  
  2.  * 倒酒方法  
  3.  * @param i 盛酒  
  4.  * @param j 倒酒  
  5.  * @param wine 三个容器中酒量的数组  
  6.  * @param cup 酒瓶和两个杯子容量的数组  
  7.  * @param sunxu 酒瓶和两个杯子顺序的数组  
  8.  * @param N 循环次数  
  9.  * @param d 要得到的酒量  
  10.  * @return  
  11.  */  
  12. int daoba(int i,int j,int[]wine,int[]cup,int[]sunxu,int N,int d){   
  13.     int k = 3-i-j;   
  14.     if(wine[k]==0&&wine[i]!=0&&(wine[i]<cup[k]||wine[i]==cup[k])){   
  15.         wine[k]=wine[i];   
  16.         wine[i]=0;   
  17.         System.out.println("第"+sunxu[i]+"杯"+"倒, 第"+sunxu[k]+"杯");   
  18.         System.out.println(wine[0]+" "+wine[1]+" "+wine[2]);   
  19.     }   
  20.     System.out.println("第"+sunxu[j]+"杯"+"到, 第"+sunxu[i]+"杯");   
  21.     //第一杯不接满,第二杯倒空   
  22.     if(wine[j]+wine[i]<cup[i]){   
  23.         wine[i]+=wine[j];   
  24.         wine[j]=0;   
  25.         System.out.println(wine[0]+" "+wine[1]+" "+wine[2]);   
  26.         if(wine[i]==d&&wine[k]==d){   
  27.             N=1000;   
  28.             return N;   
  29.         }   
  30.     //第一杯接满,第二杯不到空   
  31.     }else if(wine[j]-cup[i]+wine[i]>0){   
  32.            
  33.         wine[j]=wine[j]-cup[i]+wine[i];   
  34.         wine[i]=cup[i];   
  35.         System.out.println(wine[0]+" "+wine[1]+" "+wine[2]);   
  36.         if(wine[k]==d&&wine[j]==d){   
  37.             N=1000;   
  38.             return N;   
  39.         }   
  40.         //第一杯接满,第二杯倒空      
  41.     }else if(wine[j]+wine[i]==cup[i]){   
  42.         wine[i]=cup[i];   
  43.         wine[j]=0;   
  44.         System.out.println(wine[0]+" "+wine[1]+" "+wine[2]);   
  45.            
  46.     }   
  47.        
  48.     return N;   
  49. }  
原创粉丝点击