state:
dp[i][j] - maximum height when block(s) of l=i and m=j is(are) on top
transition:
dp[i][j]+=max(dp[i-1][j], dp[i][j-1])
each step we have two choices...
/* UVas */ /*****************************************************************************/ struct block { int l, m; } b[10000]; int n; int d[101][101]; int main(void) { while (scanf("%d", &n)>0&&n) { memset(d, 0, sizeof(d)); for (int i=0; i<n; i++) { scanf("%d %d", &b[i].l, &b[i].m); d[b[i].l][b[i].m]++; } int r=0; for (int i=1; i<=100; i++) for (int j=1; j<=100; j++) { d[i][j]+=max(d[i-1][j], d[i][j-1]); r=max(r, d[i][j]); } printf("%d\n", r); } printf("*\n"); } /*****************************************************************************/
No comments :
Post a Comment