代码改变世界

1626. Recursively Palindromic Partitions

2011-04-29 12:52  Min·zc  阅读(178)  评论(0编辑  收藏  举报

传送门:http://soj.me/1626

题目中数字排列不需要考虑顺序的问题 ,且左右两边的数列也都是对称数列

因为左右是对称的,中间的数字可以任取,所以只需要考虑左边数列的和就可以了

状态转移方程是

x【i】=x【k】(2*k<=i)

---------------------------------------------------------------------------------

#include <iostream>

 2 using namespace std;
 3 int p[1010];
 4 void setp()
 5 {
 6         p[0]=1;
 7         for(int i=1;i<1010;i++)
 8                 for(int j=0;2*j<=i;j++)
 9                         p[i]+=p[j];
10 }
11 int main()
12 {
13         int t=0;
14         setp();
15         cin>>t;
16         for(int i=0;i<t;i++)
17         {
18                 int tm;
19                 cin>>tm;
20                 cout<<i+1<<" "<<p[tm]<<endl;
21         }
22 }