二、递归(一)
一、基本思想
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
二、 实例-小游戏
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
#include "stdafx.h"
#include
#include
#define MAXIN 75
using namespace std;
char board[MAXIN + 2][MAXIN + 2];
//定义矩阵板,外围为空
int minstep, w, h, to[4][2] = { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 } };
//定义方向
bool mark[MAXIN + 2][MAXIN + 2];
//定义标记数组//搜索函数
void Search(int now_x, int now_y, int end_x, int end_y, int step, int f) {
if (step > minstep) {
return;
//当前路径数大于minstep, 返回->优化策略
}
if (now_x == end_x && now_y == end_y) {//到达终点
if (minstep > step){//更新最小路径数
minstep = step;
}
return;
}
for (int i = 0;
i<4;
i++) {//枚举下一步的方向
int x = now_x + to[i][0];
int y = now_y + to[i][1];
if ((x>-1) && (x-1) && (y>begin_x>>begin_y>>end_x>>end_y ){
//读入起始点和终点
if (begin_x == 0)break;
printf("%d %d %d %d \n", begin_x,begin_y, end_x, end_y);
cout << "begin search...\n";
count++;
minstep = 1000;
memset(mark, false, sizeof(mark));
//递归搜索
Search(begin_x, begin_y, end_x, end_y, 0, -1);
if (minstep < 1000)printf("pair %d: %d segments.\n", count, minstep);
else printf("pair: %d: impossible.\n", count);
}
printf("\n");
}return 0;
}
【二、递归(一)】【相关文档】
1.老生常谈,正确使用memset
2.递归-小游戏(算法基础 第3周)
3.Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
4 深入了解scanf()/getchar()和gets()等函数
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- Shell-Bash变量与运算符
- 赢在人生六项精进二阶Day3复盘
- 清明,是追思、是传承、是感恩。
- 2019年12月24日
- 陇上秋二|陇上秋二 罗敷媚
- 牛人进化+|牛人进化+ 按自己的意愿过一生