C——求假币【三分法】

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
    const int N = 8;
    int a[N] = {2,2,2,2,2,1,2,2};
int Coin(int low,int high, int n);
int main()
{
    cout << "Hello world!" << endl;
    int addr = 0;
    addr = Coin(1,7,7);
    printf("%d", addr);

    return 0;
}
int Coin(int low,int high, int n)
{
    int i, num1, num2, num3;
    int add1 = 0 ,add2 = 0;
    if(n == 1)
        return low+1;
    if(n % 3 == 0)
        num1 = num2 = n/3;
    else
        num1 = num2 = n / 3 + 1;
    num3 = n - num1 - num2;
    for(i = 0; i < num1; i++)
        add1 = add1 + a[low + i];
    for(i = num1; i<num1 + num2; i++)
        add2 = add2 + a[low+i];
    if(add1 < add2)
        return Coin(low, low+num1-1, num1);
    else if(add1 > add2)
        return Coin(low + num1, low + num1 + num2 - 1, num2);
    else
        return Coin(low+num1+num2, high ,num3);

}

猜你喜欢

转载自blog.csdn.net/weixin_43469680/article/details/89205872