标签:
解题思路:用a[i][j]表示在第i秒在地点j的掉落馅饼的数量,
设整个馅饼掉落的时间持续为timemax,即为矩阵的高度,一共0到10个地点,为矩阵的长度,如图,即可构成数塔,因为考虑到在地点0的时候,j-1为负数,所以将地点均从1开始处理
则有
a[i-1][j]=max(max(a[i][j],a[i][j-1]),a[i][j+1])+a[i-1][j];
分别对应在每一个地点的三个选择,对应于上一秒在原地,原地左边,原地右边,
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27201 Accepted Submission(s): 9239
#include<stdio.h> #include<string.h> int a[100005][15]; int max(int a,int b) { if(a>b) return a; else return b; } int main() { int i,j,timemax,n,x,y; while(scanf("%d",&n)!=EOF&&n) { timemax=0; memset(a,0,sizeof(a)); for(i=1;i<=n;i++) { scanf("%d %d",&x,&y); x++; a[y][x]+=1; if(y>timemax) timemax=y; } for(i=timemax;i>=1;i--) { for(j=1;j<=11;j++) { a[i-1][j]=max(max(a[i][j],a[i][j-1]),a[i][j+1])+a[i-1][j]; } } printf("%d\n",a[0][6]); } }
标签:
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4199094.html