package com.telecom.myshiro.test; import java.util.ArrayList; import java.util.List; /** * 这个是用来测试一个算法的 * 有十个空瓶子 每三个空瓶子可以换一瓶汽水 * 如果有两个空瓶子,可以和老板借一瓶汽水 * 如果有n个空瓶 ,可以换多少瓶汽水 * */ public class suanfaceshi { int suma=0; /** * 每三个空瓶子可以换一瓶汽水 * 两个空瓶子可以借一瓶,喝完再还,三个空瓶 */ //传进去一个数,给出来这个数对3 求余的余数和这个商 //得记录这个 数的商 // 返回的集合里面只有两个数,一个是a+b 一个是a // a+b 是进入下一次的计算, a 是拿出来做加的计算 public List<Integer> doJisuan(int num){ List<Integer> nums=new ArrayList<Integer>(); if (num>=2){ int a =num/3; int b=num%3; nums.add(a+b); nums.add(a); return nums; }else{ return nums; } } // 在这里给出一个总的空瓶数,返回最多能喝到的瓶数 public int test (int num){ if(num<=2){ return 0; } suanfaceshi t=new suanfaceshi(); List<Integer> ps=new ArrayList<Integer>(); ps=t.doJisuan(num); //如果商 和余数之和大于2则可以继续算下去 if(ps.get(0)>2){ suma+=(int)ps.get(1); return test(ps.get(0)); } // 如果还有两个空瓶子 if (ps.get(1)==2){ suma=suma+ps.get(1)+1; } // 如果还有一个空瓶子 if(ps.get(1)==1){ suma+=ps.get(1); } return suma; } public static void main(String[] args) { suanfaceshi t=new suanfaceshi(); int a= t.test(-3); System.out.println(a); } }