蓝桥杯真题 振兴中华 题解
2018-03-08 08:47
176 查看
题目:
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:(也可参见下图)
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
思路:
DFS;递归深度为一句话的汉字个数,在当前格子下有两种选择,向右走or向下走,
递归出口为走到带有“华”字的格子。
PS:这个题一开始做出结果是70来,搞了半天,才发现我把格子算成5*5的了,悲催…也给了自己启示:当得出的结果大于正确答案时看看是不是数组的大小问题,在比赛时要细心看好数组是多大的。
PPS:下面的代码还多了一些东西,把路径给打印出来了
答案:35
Code:
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:(也可参见下图)
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
思路:
DFS;递归深度为一句话的汉字个数,在当前格子下有两种选择,向右走or向下走,
递归出口为走到带有“华”字的格子。
PS:这个题一开始做出结果是70来,搞了半天,才发现我把格子算成5*5的了,悲催…也给了自己启示:当得出的结果大于正确答案时看看是不是数组的大小问题,在比赛时要细心看好数组是多大的。
PPS:下面的代码还多了一些东西,把路径给打印出来了
答案:35
Code:
//振兴中华 答案:35 #include<bits/stdc++.h> using namespace std; int cnt = 0; int selected[5][6]; void print(int cnt){ cout<<"case:"<<cnt<< endl; for(int i = 1; i <= 4; ++i){ for(int j = 1; j<= 5; ++j){ switch(selected[i][j]){ case 0:cout<<" ";break; case 1:cout<<"> ";break; case 2:cout<<"! ";break; } } cout<<endl; } cout<<endl; } void dfs(int x, int y){ //(x,y)当前要访问的坐标 if(x == 4 && y == 5){ cnt++; print(cnt); return ; } //向右走 if(y < 5) { selected[x][y] = 1; dfs(x, y + 1); selected[x][y] = 0; } //向下走 if(x < 4){ selected[x][y] = 2; dfs(x + 1, y); selected[x][y] = 0; } } int main(){ for(int i = 1; i <= 4; ++i){ for(int j = 1; j <= 5; ++j){ selected[i][j] = 0; } } dfs(1,1); cout<<cnt<<endl; return 0; }
相关文章推荐
- 蓝桥杯 从我做起振兴中华(java题解)
- 蓝桥杯真题 出栈次序 题解
- 2016第七届蓝桥杯 C/C++B组真题及题解(未完待续)
- 蓝桥杯真题题解 方格填数
- 2018省赛第九届蓝桥杯真题C语言B组第八题题解 日志统计
- 2018省赛第九届蓝桥杯真题C语言B第四题题解 测试次数
- 2017年第八届蓝桥杯 C/C++B组 真题分析与题解(未完待续)
- 2012第三届蓝桥杯本科组 C/C++真题及题解
- 2012第三届蓝桥杯 C/C++本科组真题及题解(未完待续)
- 蓝桥杯真题 分巧克力 题解
- 2017第八届蓝桥杯 C/C++C组真题及题解
- 2012第三届蓝桥杯 C/C++高职组真题及题解(未完待续)
- 第四届蓝桥杯软件类省赛真题-C-A-3_振兴中华
- 蓝桥杯第七届决赛真题大全题解(java版本)
- 2013第四届蓝桥杯 C/C++A组真题及题解(未完待续)
- 蓝桥杯真题 包子凑数 题解
- 2013年第四届蓝桥杯C/C++ C组决赛真题题解
- 【第四届蓝桥杯】振兴中华
- 【蓝桥杯学习记录】【3】递归与循环(3)递归真题
- 抽签(蓝桥杯真题)