动态规划dp入门(dp[i]就代表所求的题目答案,i表示一种递推状态!!!),dp复杂度一般为n^2的!

alt

01背包--入门dp(注意数组范围要比最大范围开大一些)

#include <bits/stdc++.h>
using namespace std;
int dp[101][1001];
int w[1001], v[1001];
int solve(int N, int V)
{
    for (int i = 1; i <= N; i++)
        for (int j = 0; j <= V; j++) {
            if (w[i] > j)//两种情况,选择最大的那一个o(n*C)的复杂度
                dp[i][j] = dp[i - 1][j];
            else
                dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i]);
        }
    return dp[N][V];
}
int main()
{
    int N, V;
    cin >> N >> V;
    for (int i = 1; i <= N; i++)
        cin >> w[i] >> v[i];
    memset(dp, 0, sizeof(dp));
    cout << solve(N, V) << endl;
    return 0;
}

最大子序列问题(注意不是最大字串!!!!)

alt

#include<bits/stdc++.h>
using namespace std;
int dp[1001][1001],a[1001],b[1001];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<=m;i++) scanf("%d",&b[i]);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++) {
            if(a[i]==b[j])//a[i],b[j]相同的时候的递推式,dp[i][j]仍然代表最终答案
                dp[i][j] = max(dp[i][j],dp[i-1][j-1]+1);
            else
                dp[i][j] = max(dp[i-1][j],dp[i][j-1]);//两个字串分别代表不同的情况

        }
   cout << dp[n][m];//最终答案
}

dp取最值的时候,若不方便比较,可定义一个新变量,对每一个dp[i]进行比较

alt

最大递增子序列问题
#include<bits/stdc++.h>
using namespace std;
const int N = 10001;
int a[N],dp[N];
int main(){
    int n;   cin >> n;
    for(int i=1; i<=n; i++)     cin >> a[i];
    int ans = 1;
    dp[1] = 1;
    for(int i = 2; i <= n; i++)
    {
        int max = 0;
        for(int j=1; j<i; j++)
        {
            if(dp[j] > max  &&  a[j] < a[i])
                max = dp[j];
        }
        dp[i] = max+1;
        if(dp[i] > ans) ans = dp[i];//ans用于比较
    }
    cout << ans << endl;
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
07-02 13:50
闽江学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务