/ * タイトル: ロープセグメントの切断長さの文字列N、考えるとは、Mは(n> 1、M> 1) ロープセグメントの積の最大値を選択します。 。* / / * 思考: 貪欲アルゴリズム。 ロープの長さは、ロープ3のカット長限り、5よりも大きい場合、4ロープの長さの残りの部分、ロープは、長さ2のロープ2を切断するとき。 * / / * 実証: とき、N> = 5、2(N -2)> N、3(N-3)> N、 即ち、場合nはそれを置くために、5よりも大きい2または3の長さをカットロープ、3(N-3)> 2 (N-2)、 ロープ3の長さを切断することが可能です。 n = 4の場合、2×2の最大カット。 * / の#include <iostreamの> する#include <string.hの> する#include <アルゴリズム> の#include <math.h>の 使用名前空間STD; INT cutRope(INT数){ IF(数<= 1){ スロー(「無効なパラメータ「); } 。(番号番号== == 2 || 3)IF { 戻り数1。 } 数timesOf3 = INT / 3; 残りの長さが4である場合、2×2切断する// IF(数- 3 * == timesOf3 1。。){ timesOf3 - ; } int型timesOf2 =(数- timesOf3 * 3)/ 2 ; リターン(INT)(POW(3、timesOf3))*(INT)(POW(2、timesOf2)); } int型のmain(){ COUT << cutRope << ENDL(8); }