溶液:2018アルゴリズムマシンZexal第二パイプ切断

件名の説明:

 

 

 

例:

 

 

インタプリタを実装します:

クラシック変形鋼切削の問題:お金を失うことをほとんどをカット

知識ポイント:動的プログラミング、パイプ切断

即ち、アレイを設定するために、改善するために、状態遷移方程式のコードの実装を得る。価格[i]は、I P、切断後のチューブの最小の長さを記憶された[i]は、iの値を格納両方アレイ。価格、チューブの長さにカットされていませんこの問題のDP配列。

分析後の状態遷移方程式は示しています。

価格[0] = 0;

価格[I] =分(P [1] +価格[I-1]、P [2] +価格[I-2]、...、P [I-1] +価格[1]、P [I] );

価格ので[i]は、すでにこれだけのコードを向上させることができ伝達方程式に従う、現在の状況下で最小です。

 

ピット:

初期化と状態遷移方程式を書きます

 

完全なコード:

 

//最小切断鋼
の#include <iostreamの> 
使用して名前空間STD; 
int型のmain()
{ 
	(偽の)IOSの:: sync_with_stdio; 
	int型の長さ、MIN; //長さと最小値であり
	、一方(CIN >>長さ)
	{ 
		int型P [長さ+ 1]; (。;;
		私は=長さを<I ++が、私は= int型1)のために
			CIN >> P [i]は、長さの値に基づいて、質問の//意味私は
		
		、価格[長さ+ 1] int型 // 保存各セグメント値
		価格[0] = 0; // [0]は、初期化エラー防止価格を使用する
		
		ための(INT I = 1; Iは=長さ<; Iは++)
		{ 
			MIN = 2147483647が; //最小値が得られた場合に設定する必要があります最大値
			のために(INT J = 1; J <= I; J ++)
			{ 
				IF(MIN> P [J] +価格[IJ])
				//常にiがjの切断面の長さと後部はijを
				する//私は切断の最小の長さを見つける
				{ 
					//最小置き換える; MIN = P [J] +価格【のIJ]を
					価格[I] = MINは、 
				}
				//状態遷移方程式は、説明を参照説明実装
			} 
		} 
		。COUTを価格<< [長さ] <<「\ N-」; 
		最長部分の切断//(I)の出力後に最小値
	} 
	戻り0; 
}

  

 

おすすめ

転載: www.cnblogs.com/doUlikewyx/p/11700775.html
おすすめ