joj1026

copy來的思想,果然自己還很菜啊

遞歸方程式如下(f(i,j)爲i個磚頭,第一排爲j個的擺發):

f(i,j)=f(i-j,j+1)+f(i-j,j+2)+...+f(i-j,floor((i-j-1)/2)

#include<iostream>
#include<stdio.h>
using namespace std;
double p[501][501];
int main()
{
    int i,j,k;
    for(i=0;i<501;i++)
       for(j=0;j<501;j++)
           p[i][j]=0;
    for(i=3;i<501;i++)
       for(j=1;j<=(i-1)/2;j++)
          p[i][j]=1;
    for(i=3;i<501;i++)
        for(j=1;j<=(i-1)/2;j++)
            for(k=j+1;k<=(i-j-1)/2;k++)
               p[i][j]+=p[i-j][k];
    int n;
    while(scanf("%d",&n),n)
    {
          double m=0;
          for(i=1;i<=(n-1)/2;i++)
              m+=p[n][i];
          printf("%.0f\n",m);                
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章