zoukankan      html  css  js  c++  java
  • 振兴中华

    欢迎访问我的新博客:http://www.milkcu.com/blog/

    原文地址:http://www.milkcu.com/blog/archives/1395367620.html

    引言

    这是2013年蓝桥杯软件大赛预赛A组(C/C++组)第3题,是个填空题,和深度优先搜索(DFS)有关,数路线和代码实现均较容易。

    题目描述

    标题: 振兴中华

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

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



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

    答案是一个整数,请通过浏览器直接提交该数字。
    注意:不要提交解答过程,或其它辅助说明类的内容。

    分析

    由于数据规模比较小,可以不用编程实现,直接一条一条路线的数数。

    比较好的方法是从上往下、从右往左的数,这样前面数过的路线刚好可以应用到后面的数数中。

    1 = 1
    1 + 2 = 3
    3 + 3 = 6
    6 + 4 = 10
    10 + 5 = 15

    所有路线加起来即可得到答案。

    当然这题也可以使用深度优先实现,代码也很简单。

    把“从我做起振兴中华”8个字替换为0~7的8个数字。

    使用深度优先算法可以很方便的得出结果。

    代码实现

    #include <iostream>
    #include <cmath>
    #include <cstring>
    using namespace std;
    int map[4][5] = {{0, 1, 2, 3, 4},
                     {1, 2, 3, 4, 5},
                     {2, 3, 4, 5, 6},
    				 {3, 4, 5, 6, 7}};
    int cnt = 0;
    int vis[4][5];
    void dfs(int a, int b) {
    	//cout << "dfs  " << a << "  " << b << endl;
    	if(vis[a][b]) {
    		return;
    	}
    	if(a == 3 && b == 4) {
    		cnt++;
    		return;
    	}
    	vis[a][b] = 1;
    	for(int i = -1; i <= 1; i++) {
    		for(int j = -1; j <= 1; j++) {
    			if(i == j || abs(i) == abs(j)) {
    				continue;
    			}
    			int newa = a + i;
    			int newb = b + j;
    			if(newa < 0 || newa >= 4 || newb < 0 || newb >= 5) {
    				continue;
    			}
    			if(map[newa][newb] - map[a][b] == 1) {
    				dfs(newa, newb);
    			}
    		}
    	}
    	vis[a][b] = 0;
    }
    int main(void) {
    	memset(vis, 0, sizeof(vis));
    	dfs(0, 0);
    	cout << cnt << endl;
    	return 0;
    }

    答案

    35

    (全文完)

  • 相关阅读:
    div自适应高度
    jquery的几种ajax提交方式
    分页后获取的数据怎么横向显示
    ssh项目将搜索条件进行联动
    某平台反war3明图原理分析
    Kali 安装8812au网卡驱动
    eXeScope 注册机制破解
    数据结构稀疏矩阵
    PEcompact 3.X 脱壳
    数据结构算数表达式求值
  • 原文地址:https://www.cnblogs.com/milkcu/p/3808867.html
Copyright © 2011-2022 走看看