poj3230

dp

View Code
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;

#define maxn 105
#define inf 0x3f3f3f3f

int map[maxn][maxn];
int income[maxn][maxn];
int n, m;
int f[maxn][maxn];

void input()
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &map[i][j]);
for (int j = 0; j < m; j++)
for (int i = 0; i < n; i++)
scanf("%d", &income[i][j]);
}

void work()
{
memset(f, 0, sizeof(f));
for (int i = m - 1; i >= 0; i--)
for (int j = 0; j < n; j++)
{
f[i][j] = -inf;
for (int k = 0; k < n; k++)
f[i][j] = max(f[i][j], f[i + 1][k] + income[k][i] - map[j][k]);
}
printf("%d\n", f[0][0]);
}

int main()
{
//freopen("t.txt", "r", stdin);
while (scanf("%d%d", &n, &m), n | m)
{
input();
work();
}
return 0;
}

posted @ 2011-10-09 17:09  金海峰  阅读(153)  评论(0编辑  收藏  举报