木棒切割问题

木棒切割问题_第1张图片

题目很简单,就是我们在写二分的时候,会遇到这样的情况:

mid =left +(right-left)/2;
        if (nums == k)return mid;
        if (nums>k)left = mid;
        if (nums

若我们debug会发现其可能会一致卡在left = mid,例如(0,1),那么就会一直循环

其实可以改为

mid =left +(right-left)/2+1;

那么就可以了。

#include 
#include 
const int N =1e3+10;
int n,k;
int q[N];

int binary_search(int left,int right){
    int mid;
    int nums=0;
    while (leftk)left = mid;
        if (numsmax_)max_ = q[i];
    }

    printf("%d",binary_search(0,max_));
    return 0;


}

你可能感兴趣的:(C++刷题,算法,数据结构)