石子归并 -记忆化搜索or区间DP

石子归并

 51Nod - 1021 

记忆化搜索:

#include
using  namespace std;
#define inf 0x3f3f3f3f
#define maxn 111
int dp[maxn][maxn];
int sum[maxn],n,a;
int dfs(int l,int r)
{
    if(l==r)return 0;
    if(dp[l][r]!=inf)
        return dp[l][r];
    for(int i=l; i>n;
    for(int i=1; i<=n; i++)
    {
        cin>>a;
        sum[i]=sum[i-1]+a;
    }
    memset(dp,inf,sizeof(dp));
    cout<

区间dp:

#include
using  namespace std;
#define inf 0x3f3f3f3f
#define maxn 111
int dp[maxn][maxn];
int sum[maxn],n,a;
int main()
{
    cin>>n;
    memset(dp,inf,sizeof(dp));
    for(int i=1; i<=n; i++)
    {
        cin>>a;
        sum[i]=sum[i-1]+a;
        dp[i][i]=0;
    }
    for(int len=1; len

 

你可能感兴趣的:(搜索进阶,DP)