现在的位置: 首页 > 综合 > 正文

免费馅饼

2013年01月09日 ⁄ 综合 ⁄ 共 681字 ⁄ 字号 评论关闭

方法跟数塔一样。。

#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;
}
      

抱歉!评论已关闭.