木棒切割问题

《算法笔记》第134页

问题:给出N根木棒长度已知但不一定相等, 现在希望通过切割得到长度相等的K根木棒,求长度相等的K根木棒最长是多少?

如:给3根木棒,长度为10, 24, 15,要切割得到7根长度相等的木棒, 则7根木棒的长度最长为6,其组合为1*6+4*6+2*6。

暴力解法:

#include
const int maxn=10010;
int main(){
	int a[maxn];
	int N, K;
	scanf("%d%d", &N, &K);
	for(int i=0; i

二分解法:

#include
#include
const int maxn=10010;
int main(){
	int a[maxn];
	int N, K;
	scanf("%d%d", &N, &K);
	for(int i=0; i= K){
			left = mid;
		}
		else{
			right = mid;
		}
	}
	
	printf("%d\n", left);
	return 0;
}

注意:二分解法中循环条件为left+1

/*如有错误,请指出*/

你可能感兴趣的:(算法学习)