题目中数字排列不需要考虑顺序的问题 ,且左右两边的数列也都是对称数列
因为左右是对称的,中间的数字可以任取,所以只需要考虑左边数列的和就可以了
状态转移方程是
x【i】=x【k】(2*k<=i)
---------------------------------------------------------------------------------
1 #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 }