文档内容
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水
瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,
喝掉3 瓶满的,喝完以后4 个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩 2 个空
瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用 3 个空瓶子换一瓶满
的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
1 /*
2 递归问题
3 3个瓶子换 1瓶水+1个空瓶子,两个瓶子换 1瓶水+0个空瓶子,1个瓶子换0瓶水。
4 f(1) = 0
5 f(2) = 1
6 f(3) = 1
7 f(4) = f(2)+1 //4个瓶子,其中 3个可以换1瓶水+1个空瓶,所以是f(2)+1
8 f(5) = f(3)+1 //3个瓶子换 1瓶水+1个空瓶,所以是 f(3)+1
9 ...
10 f(n) = f(n-2)+1 */
11 #include
12
13 using namespace std;
14
15 int f(int n)
16 {
17 if(n==1) return 0;
18 if(n==2) return 1;
19 return f(n-2)+1;
20 }
21
22 int main()
23 {
24 int n;
25 while(cin >> n){
26 if(n==0)
27 break;
28 cout< set=new TreeSet();
11 int n=sc.nextInt();
12 if(n>0){
13 for(int i=0;i='A'&&ch[i]<='F'){
sum+=(Integer.valueOf(ch[i])-55)*Math.pow(16,i);
}else {
sum+=(Integer.valueOf(ch[i])-48)*Math.pow(16,i);
}
}
System.out.println(sum);
// System.out.println(Integer.valueOf('6'));}
}
}