poj 3390 DP

来源:互联网 发布:网络理财诈骗案 编辑:程序博客网 时间:2024/05/01 13:05
import java.io.*;import java.util.*;class line{    }public class Main {     public static void main(String[] args) throws Exception {        Scanner scan = new Scanner(System.in);        int numbers = scan.nextInt();        while(numbers-->0){            int chars = scan.nextInt();             //length limitation of each line            int size = scan.nextInt();              //words in text            int arr[] = new int[size+2];            int dp[] = new int[size+2];            for(int i=1;i<=size;i++){                arr[i] = scan.nextInt();            }            for(int i=1;i<=size;i++){                dp[i] = dp[i-1] + (int)Math.pow(chars-arr[i],2);                int sum  = arr[i];                for(int j=i-1;j>0&&sum+arr[j]+1<=chars;j--){                    sum+=arr[j]+1;                    int temp = dp[j-1]+(int)Math.pow(chars-sum,2);                    dp[i] = Math.min(dp[i],temp);                }            }            System.out.println(dp[size]);        }    }};

这个题目说点啥好呢,解空间开的好猥琐啊,这个真不知道怎么说了,想不出来