题目:真币的重量相等,假币的重量比假币轻,只有一个假币
#include <iostream>
using namespace std;
#define MAXNUM 100
int getFalseCoin(int coin[],int start,int end){
//出口
if(end-start==1){
return coin[start]>coin[end]?end:start;
}
int leftWeight=0,rightWeight=0;
//如果数量是奇数
if((end-start)%2==0){
//左边的总值为从start加到end/2-1。右边的总值为end/2到end-1
for(int i=start;i<end/2;i++) leftWeight+=coin[i];
for(int j=end/2;j<end;j++) rightWeight+=coin[j];
//如果左边总值==右边总值 返回 end
if(leftWeight==rightWeight) return end;
//否则调用getFalseCoin(coin,start,end-1);
else getFalseCoin(coin,start,end-1);
}else{
//如果数量是偶数
//如果左边总值小于:getFalseCoin(coin,start,end/2)
for(int i=start;i<=end/2;i++) leftWeight+=coin[i];
for(int j=end/2+1;j<=end;j++) rightWeight+=coin[j];
if(leftWeight<rightWeight) getFalseC