TOJ 3153 Recursively Palindromic Partitions

题意

求一个数的 回文递归分解的个数,比如说 数字 7:
7
1+5+1
2+3+2 - - - - - - 1+1+3+1+1
3+1+3 - - - - - - 1+1+1+1+1+1+1

一共有6种分解的方法。

思路

题意就已经明了,思路按照上面的分解也就差不多了
对于一个数分解的时候: 只要保持左右相等,就是一种分解方法;
可以递推来解决:
f[0]=f[1]=1
f[7]=f[0]+f[1]+f[2]+f[3]
即可

代码

#include <iostream>
using namespace std;

int T,n,res[1002];
int main()
{
    cin>>T;
    res[0]=res[1]=1;
    for(int i=2;i<1001;i++){
        res[i]=0;
        for(int j=0;j<=i/2;j++)
            res[i]+=res[j];
    }
    for(int k=1; k<=T; k++)
    {
        cin>>n;
        cout<<k<<" "<<res[n]<<endl;
    }
}

你可能感兴趣的:(递推,TOJ)