[蓝桥杯]振兴中华

小明参加了学校的趣味运动会,其中的一个项目是:跳格子。

地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)

 

从我做起振

我做起振兴

做起振兴中

起振兴中华

 

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

答案是一个整数,请通过浏览器直接提交该数字。

注意:不要提交解答过程,或其它辅助说明类的内容。

方法:深搜 用0到7这七个数字代替题中的汉字.

代码:

#include <stdio.h>

int cheesboard[][5] = {{0,1,2,3,4},{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};


int total;
void dfs(int k,int x,int y)
{
    if (k>=7)
    {
        if (x<=4 || y<=4)
        {
            total++;
        }
        return;
    }
    if (cheesboard[x][y+1] == k+1)
    {
        dfs(k+1,x,y+1);
    }
    if (cheesboard[x+1][y]==k+1)
    {
        dfs(k+1,x+1,y);
    }


}
int main()
{
    dfs(0,0,0);
    printf("共有:%d种方法",total);

    return 0;
}
View Code

 

posted on 2013-05-18 14:01  hazard  阅读(273)  评论(0)    收藏  举报

导航