Offer68題 Day4

itsinsane發表於2024-10-30

面試題 14- I. 剪繩子

#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
	static int cuttingBamboo(const int bamboo_len) {
		vector<int> dp(bamboo_len+1,0);      // dp陣列存放乘積max
		if(bamboo_len<=1) return 0;					// 切割無效
		for(int i=2;i<=bamboo_len;i++)              // i表示繩子的長度
		{
			for(int j=1;j<i;j++)                    // 在長i的繩子的j處切割
			{
				dp[i]=max(dp[i], max(j*(i-j),j*dp[i-j]));
			}
		}
		return dp[bamboo_len];
	}
};

int main()
{
	constexpr int bamboo_len = 10;
	cout << "Maximum product for bamboo length " << bamboo_len << " is: " << Solution::cuttingBamboo(bamboo_len) << endl;
	return 0;
}

相關文章