免费馅饼
方法跟数塔一样。。
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<debug.h> int A[100010][11]; int fun1(int x,int y) { return x>y?x:y; } int fun2(int x,int y,int z) { return fun1(fun1(x,y),z); } int main( ) { int N,i,j,k,point,t; //Debug(); while(scanf("%d",&N),N) { k=0; memset(A,0,sizeof(A)); for(i=0;i<N;i++) { scanf("%d%d",&point,&t); A[t][point]++; if(t>k) k=t; } //printf("k:%d\n",k); //printf("********"); for(i=k-1;i>=0;i--) {//printf("********"); for(j=0;j<=10;j++) { if(j==0) A[i][j]+=fun2(A[i+1][j],A[i+1][j+1],0); else if(j==10) A[i][j]+=fun2(A[i+1][j],0,A[i+1][j-1]); else A[i][j]+=fun2(A[i+1][j],A[i+1][j+1],A[i+1][j-1]); } } //printf("********"); //system("pause"); printf("%d\n",A[0][5]); } // system("pause"); return 0; }
posted on 2011-04-19 16:07 more think, more gains 阅读(188) 评论(0) 编辑 收藏 举报