讨论 / 题目描述不清楚啊
ssxyh 2008-12-08 19:37:00
点我顶贴 收藏 删除
有n面红旗和n面黄旗从东到西插成一排。如果相邻的两面旗帜的颜色不同,则称为颜色发生一次改变。

任务:计算这2n面旗帜的颜色改变m次的插法共有多少种?

示例:

旗帜的颜色为“红黄红红黄黄黄”称为颜色改变了3次的插法。

在n=4,m=1时仅有两种插法:“红红红红黄黄黄黄”和“黄黄黄黄红红红红”,对应的输出为“2”。

输入格式

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

输出格式

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

样例输入

4 1

样例输出

2

"旗帜的颜色不同,则称为颜色发生一次改变。"什么是颜色不同叫发生一次改变?

“红黄红红黄黄黄”这个是7个旗子啊!!!怎么是3次?

#1 Zx.MYS@2008-10-06 19:27:00
回复 删除
我猜是 红黄 or 黄红 = 1次
#2 libojie@2008-10-12 22:16:00
回复 删除
从左到右数,发现旗子的颜色与上一个不同,就叫做一次改变。

红--黄--红红---黄黄黄

分割线处分别是一次改变。

这是一道组合数学问题。

#3 guoshi3@2008-10-14 21:27:00
回复 删除
这是一道暴力搜索题……
#4 tyr007@2008-10-15 18:42:00
回复 删除
将原始数据交换一次为一次,

#5 Jollwish@2008-10-18 22:48:00
回复 删除
简单的递归
#6 逸如天飘雪@2008-12-08 19:37:00
回复 删除
var

n,m,ans:longint;

function c(a,b:longint):longint;

var i,temp:longint;

begin

temp:=1;

for i:=b downto (b-a+1) do

temp:=temp*i;

for i:=2 to a do

temp:=temp div i;

c:=temp;

end;

begin

readln(n,m);

ans:=c(m div 2,n-1)*c((m-1)div 2,n-1)*2;

writeln(ans);

readln;

readln;

end.

满分的

查看更多回复
提交回复