杭电 1028 Ignatius and the Princess III

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int main()

{

   int c1[130],c2[130];

   int n;

   while(scanf("%d",&n)!=EOF)

   {

       for(int i=0;i<=n;i++)

       {

           c1[i]=1;

           c2[i]=0;

       }//初始化第一个括号。 

       for(int i=2;i<=n;i++)//从第二个括号到第n个括号依次进行运算。 

       {

           for(int j=0;j<=n;j++)//第一个括号的内容 

           {

               for(int k=0;j+k<=n;k+=i)//后一个括号的内容 

               {

                   c2[j+k]+=c1[j];//运算结果放到c2中。 

               }

           }

           for(int j=0;j<=n;j++)//每次合并完两个括号之后,就赋值一次,使得合并完的内容都放到第一个括号中。 

           {

               c1[j]=c2[j];

               c2[j]=0;

           }

       }

       printf("%d\n",c1[n]);

   }

  // system("pause");

   return 0;

}

你可能感兴趣的:(NAT)