| 记录编号 | 
        32653 | 
        评测结果 | 
        AAAAAAAAAA | 
    
    
        | 题目名称 | 
        608.删数 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         fanzeyi | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C | 
        运行时间 | 
        0.022 s  | 
    
    
        | 提交时间 | 
        2011-11-07 16:18:13 | 
        内存使用 | 
        0.28 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 101
int n;
int f[MAX][MAX];
int num[MAX];
inline int max(int a, int b) {
    return a > b ? a : b;
}
int main() {
    FILE *fin = fopen("remove.in", "r");
    FILE *fout = fopen("remove.out", "w");
    int i, j, k;
    int a;
    memset(f, 0, sizeof(0));
    fscanf(fin, "%d", &n);
    for(i = 1; i <= n; i++) {
        fscanf(fin, "%d", &num[i]);
        f[i][i] = num[i];
    }
    for(i = n; i > 0; i--) {
        for(j = i+1; j <= n; j++) {
            f[i][j] = abs(num[i] - num[j]) * (j - i + 1);
            for(k = i; k < j; k++) {
                f[i][j] = max(f[i][j], f[i][k] + f[k+1][j]);
            }
        }
    }
    fprintf(fout, "%d\n", f[1][n]);
    return 0;
}