欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 简单线性DP

简单线性DP

2024/11/30 3:13:36 来源:https://blog.csdn.net/scq_king/article/details/144121633  浏览:    关键词:简单线性DP

数字三角形--简单线性DP

题目链接:数字三角形

解题代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;public class Main {static int N=510;static int INF= (int) -1e9;static String[] q;static int[][]f=new int[N][N];static int[][]a=new int[N][N];public static void main(String[] args)throws Exception {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));q=br.readLine().split(" "); int n= Integer.parseInt(q[0]);for(int i=1;i<=n;i++){q=br.readLine().split(" ");for(int j=1;j<=i;j++){a[i][j]= Integer.parseInt(q[j-1]);}}for(int i=0;i<=n;i++)for(int j=0;j<=i+1;j++)f[i][j]=INF;f[1][1]=a[1][1];for(int i=2;i<=n;i++){for(int j=1;j<=i;j++){f[i][j]=Math.max(f[i-1][j-1]+a[i][j],f[i-1][j]+a[i][j]);}}int x=0;for(int i=1;i<=n;i++)if(f[n][i]>x)x=f[n][i];System.out.println(x);}
}

最长上升子序列

题目链接:最长上升子序列

题解代码:

//package 线性DP.最长上升子序列;import java.util.Scanner;public class Main {static int N=1010;static int[]f=new int[N];public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[n+1];for(int i=1;i<=n;i++)a[i]=sc.nextInt();//求得是以每一个数结尾的上升子序列for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++){if(a[i]>a[j])f[i]=Math.max(f[i],f[j]+1);}}int x=f[1];for(int i=2;i<=n;i++)if(f[i]>x)x=f[i];System.out.println(x);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com