pku 1157 LITTLE SHOP OF FLOWERS 解题报告
算法:很直观的dp,不多说。
AC代码:
#include <stdio.h>
#include <string.h>
#define inf -55
#define max(a, b) (a > b ? a : b)
int F, V, A[105][105], dp[105][105];
int main()
{
freopen("flower10.inp", "r", stdin);
int i, j, k;
scanf("%d%d", &F, &V);
for (i = 0; i < F; i++)
{
for (j = 0; j < V; j++)
{
scanf("%d", &A[i][j]);
}
}
for (i = 0; i < V; i++)
{
dp[0][i] = A[0][i];
}
for (i = 1; i < F; i++)
{
for (j = 0; j < V; j++)
{
dp[i][j] = inf;
}
}
for (i = 1; i < F; i++)
{
for (j = i - 1; j < V; j++)
{
for (k = j + 1; k < V; k++)
{
dp[i][k] = max(A[i][k] + dp[i - 1][j], dp[i][k]);
}
}
}
int answer = inf;
for (i = 0; i < V; i++)
{
if (dp[F - 1][i] > answer)
{
answer = dp[F - 1][i];
}
}
printf("%d/n", answer);
return 0;
}