动态规划 删除消息

来源:互联网 发布:家庭装修网络布线方案 编辑:程序博客网 时间:2024/05/21 10:53

可以改进  有时间改进

package com.bluecup.org;import java.util.Scanner;public class Min_DeleteNote {/** * @param args */static int f[][][]=new int[20][20][2];static int t[][]=new int[20][2];static int m[][]=new int[20][20];static int n;public static void main(String[] args) {// TODO Auto-generated method stub        Scanner scan=new Scanner(System.in);        n=scan.nextInt();        for(int i=0;i<n;i++)        {        int start=scan.nextInt();        int time=scan.nextInt();        t[i][0]=start;        t[i][1]=time;        }        f[0][0][0]=f[0][0][1]=t[0][1];        for(int i=0;i<n-1;i++)        {        for(int j=i+1;j<n;j++)        {        getMaxAndMin(i,j);        f[i][j][0]=max;        f[i][j][1]=min;        //System.out.println(max+" "+min);        }        }        m[0][0]=t[0][0]+t[0][1];       // System.out.println(f[0][n-1][1]+" "+f[0][n-1][0]);        for(int i=1;i<n;i++)        {        m[0][i]=t[i][0]+f[0][i][1]+f[0][i][0];        int p=0;        if(i!=1)        {        p=m[0][i-1];                if(p>t[i][0])        p=p+t[i][1];        else p=t[i][0]+t[i][1];        }        else        {        if(m[0][0]>t[1][0])        p=m[0][0]+t[1][1];        else p=t[1][0]+t[1][1];        }        m[0][i]=m[0][i]<p?m[0][i]:p;        //System.out.println(m[0][i]);        for(int j=1;j<i;j++)        {        p=0;        p=m[0][j-1];        if(p>t[i][0])        p=p+f[j][i][0]+f[j][i][1];        else p=t[i][0]+f[j][i][0]+f[j][i][1];        m[0][i]=m[0][i]<p?m[0][i]:p;        }        }        for(int i=0;i<n;i++)          System.out.println(m[0][i]);}static int max;static int min;    static void getMaxAndMin(int i,int j)    {    int m,n;    m=n=t[i][1];    i++;    for(;i<=j;i++)    {    if(m<t[i][1])    m=t[i][1];    if(n>t[i][1])    n=t[i][1];    }    max=m;    min=n;    }}


 

0 0