Problem : [Usaco2015 Feb]Cow Hopscotch
Description
正如人们喜欢玩游戏“跳房子”一样,农夫John的奶牛也发明了一些适合它们玩的“跳房子”游戏。尽管这些重达
近一吨的笨拙动物玩游戏总是以灾难结束,但这并不妨碍它们每天下午玩游戏的热情。这个游戏在一个R*C的网格
(2≤R≤15,2≤C≤15)中进行,其中每一个方格是红色或者蓝色。奶牛一开始在左上角的格子中,通过一系列有
效的跳跃,移动到右下角格子中。一个跳跃是有效的,当且仅当
1)你跳跃到与之前所站不同颜色的格子中,
2)你要跳跃到的格子在你现在所站格子的下方至少一行的位置,
3)你要跳跃到的格子在你现在所站格子的右边至少一列的位置。
请帮助奶牛们计算它们有多少种方法可以从左上角格子跳跃到右下角格子。
Input
第一行包含两个整数R和C。后面R行每行包含C个字符。每一个字符是“R”或“B”,表示一个红色或蓝色格子。
Output
输出从左上角格子跳跃到右下角格子的不同方法数量。
Sample Input
4 4
RRRR
RRBR
RBBR
RRRR
Sample Output
3
#include<bits/stdc++.h>
using namespace std;
int a,b,ans;
char Map[20][20];
void dfs(int x,int y)
{
if(x==a-1 && y==b-1)
{
ans++;
return ;
}
for(int i=x+1; i<a; i++)
for(int j=y+1; j<b; j++)
{
if(Map[i][j]!=Map[x][y])
dfs(i,j);
}
}
int main()
{
cin>>a>>b;
ans=0;
for(int i=0; i<a; i++)
cin>>Map[i];
dfs(0,0);
cout<<ans<<endl;
return 0;
}