zoukankan      html  css  js  c++  java
  • poj——3176

    #include <iostream>
    #include<cstdio>
    #include<cstdlib>
    //#include<memory.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int s[360][360];
    
    int dfs(int x,int y,int n)
    {
        //cout<<endl<<x<<"->"<<y<<endl;
        int res=0;
        if(x==n)
        {
            return 0;
        }
        else
        {
            res= max(dfs(x+1,y,n)+s[x][y],dfs(x+1,y+1,n)+s[x][y]);
        }
        return res;
    }
    
    int main()
    {
        int n,i,j,result;
       scanf("%d",&n);
       memset(s,-1,sizeof(s));
    for(i=0;i<n;i++)
    {
        for(j=0;j<=i;j++)
    
        cin>>s[i][j];
    }
    result=dfs(0,0,n);
    cout<<result<<endl;
    
    
    
    
    
    
    }
    

      此题直接用深搜会超时, 贴上代码

    但是用“记忆化搜索则会解决这个问题”;继续贴上ac代码

    #include <iostream>
    #include<cstdio>
    #include<cstdlib>
    //#include<memory.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int s[360][360];
    int dp[360][360];

    int dfs(int x,int y,int n)
    {
    //cout<<endl<<x<<"->"<<y<<endl;
    if(dp[x][y]>=0)
    {
    return dp[x][y];
    }
    int res=0;
    if(x==n)
    {
    return 0;
    }
    else
    {
    dp[x][y]= max(dfs(x+1,y,n)+s[x][y],dfs(x+1,y+1,n)+s[x][y]);
    res=dp[x][y];
    }
    return res;
    }

    int main()
    {
    int n,i,j,result;
    //while(scanf("%d",&n)!=EOF){
    scanf("%d",&n);
    memset(s,-1,sizeof(s));
    memset(dp,-1,sizeof(dp));
    for(i=0;i<n;i++)
    {
    for(j=0;j<=i;j++)

    cin>>s[i][j];
    }
    result=dfs(0,0,n);
    cout<<result<<endl;//}


    }

  • 相关阅读:
    tidb3.2参数优化配置整个过程
    tidb优化配置
    mysql使用docker安装
    mysql密码规则配置-配置为简单密码123456
    goaccess日志分析器使用
    c# printDialog不显示问题
    short数组写进txt
    txt文件存储问题
    c# 调用c++dll二次总结
    程序员代码开发的自测素养
  • 原文地址:https://www.cnblogs.com/41412179guo/p/4585587.html
Copyright © 2011-2022 走看看