您的位置:首页 > 其它

振兴中华

2016-03-09 11:13 295 查看

振兴中华

才疏学浅,资历欠佳,难免有误,望有心人批评指正。

小明参加了学校的趣味运动会,其中的一个项目是:跳格子。地上画着一些格子,每个格子里写一个字,如下所示:

从我做起振
我做起振兴
做起振兴中
起振兴中华


比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。要求跳过的路线刚好构成“从我做起振兴中华”这句话。请你帮助小明算一算他一共有多少种可能的跳跃路线呢?

其实这道题,如果不编程而采用二叉树枚举的话也是可以做出来的(从(0,0)到(3,4),要么向右要么向下)

编程思路:把每个格子都换成一个数字,从0算起,这样,题目就变成了从0格跳到第7格的路线数目。

从我做起振 01234

我做起振兴 12345

做起振兴中 23456

起振兴中华 34567

#include <stdio.h>
int a[4][5];
int sum;
void dfs(int row,int col,int index)
{
if(a[row][col]==index && index==7)
sum++;
else
{
if(row+1<4)
dfs(row+1,col,index+1);//向下
if(col+1<5)
dfs(row,col+1,index+1);//向右
}
}
int main()
{
int row,col;
for(row=0;row<4;row++)
for(col=0;col<5;col++)
a[row][col]=row+col;//构造矩阵
dfs(0,0,0);
printf("sum = %d\n",sum);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: