/*每段長度的鋼筋對應不同的盈利,問怎樣切割能盈利最多!**帶備忘的自頂向下遞迴*///
自頂向下 遞迴
#include#include
#include
using
namespace
std ;
#define maxn 1000000
intp[maxn] ;
int solve(int
n)
int max_num = -maxn ;
for(int i=1 ; i<=n ; i++)
return
max_num ;
}int
main()
int result =solve(n) ;
printf(
"%d\n
", result) ;
}return0;
}
#include#include自底向上#include
using
namespace
std ;
#define maxn 1000000
intp[maxn] ;
intvisit[maxn] ;
int solve(int
n)
if (n==0
)
int max_num = -maxn ;
for(int i=1 ; i<=n ; i++)
visit[n] =max_num ;
return
max_num ;
}int
main()
//盈利可能是 0
for(int i=0 ; i<=n ; i++)
int result =solve(n) ;
printf(
"%d\n
", result) ;
}return0;
}
#include#include自底向上記錄最優解對應的切割方案#include
using
namespace
std ;
#define maxn 1000000
intp[maxn] ;
intvisit[maxn] ;
int solve(int
n) visit[i] =max_num ;
}return
visit[n] ;
}int
main()
int result =solve(n) ;
printf(
"%d\n
", result) ;
}return0;
}
#include#includeview code#include
using
namespace
std ;
#define maxn 1000000
intp[maxn] ;
intvisit[maxn] ;
intcut[maxn] ;
int solve(int
n) }
visit[i] =max_num ;
}return
visit[n] ;
}int
main()
for(int i=0 ; i<=n ; i++)
int result =solve(n) ;
while
(n) printf(
"%d\n
", result) ;
}return0;
}
15 1 鋼條切割 動態規劃
問題 給定一段長度為n英吋的鋼條和乙個 表,求切割鋼條方案,使收益最大 切割本身沒有成本 解法一 帶備忘錄的自頂向下法 帶備忘錄的自頂向下法 param p 長度為i的鋼條的收益為p i param n 待切割的鋼條的長度 public static intmemoizedcutrod int p,...
演算法導論15 1鋼條切割 練習總結
15.1 1 由公式 15.3 和初始條件t 0 1,證明公式 15.4 成立。15.1 2 舉反例證明下面的 貪心 策略不能保證總是得到最優切割方案。定義長度為i的鋼條的密度為pi i,即每英吋的價值。貪心策略將長度為n的鋼條切割下長度為i 1 i n 的一段,其密度最高。接下來繼續使用相同的策略...
演算法導論 第15章 動態規劃之鋼條切割
python coding utf 8import numpy import copyimport timea 0,1,5,8,9,10,17,17,20,24,30 不同長度鋼條的 表,a k 對應於長度為k的剛條的 assert len a 11 cost numpy.zeros shape 1...