您的位置:首页 > 其它

【动态规划】【RQNOJ】[AHOI1997]彩旗飘飘

2010-07-18 21:33 218 查看

题目描述

有n面红旗和n面黄旗从东到西插成一排。如果相邻的两面旗帜的颜色不同,则称为颜色发生一次改变。
任务:计算这2n面旗帜的颜色改变m次的插法共有多少种?
示例:
旗帜的颜色为“红黄红红黄黄黄”称为颜色改变了3次的插法。
在n=4,m=1时仅有两种插法:“红红红红黄黄黄黄”和“黄黄黄黄红红红红”,对应的输出为“2”。

输入格式

输入:从键盘上依闪输入自然数n和m。(n<15)

输出格式

输出:把插法总数在屏幕上显示输出。

样例输入

#include<stdio.h>
int f[100][100][100][2];
int i,j,k,l,n,m;
int main()
{
scanf("%d%d",&n,&m);
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
f[i][j][1][0]=f[i][j][1][1]=1;
for (k=2;k<=m;++k)
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
{
for (l=1;l<=i;++l)
f[i][j][k][0]+=f[i-l][j][k-1][1];
for (l=1;l<=j;++l)
f[i][j][k][1]+=f[i][j-l][k-1][0];
}
printf("%d/n",f

[m][0]+f

[m][1]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: