- 浏览: 204357 次
- 性别:
- 来自: 武汉
-
文章分类
- 全部博客 (137)
- c++ (74)
- c++,算法,回溯 (2)
- DP问题。 (9)
- DP问题,0/1背包问题 (3)
- 数学问题 (6)
- 贪心算法 (10)
- 排序 (16)
- 数据结构 (7)
- 容器 (2)
- 模拟问题 (2)
- 水题 (8)
- 并查集 (3)
- 非技术 (2)
- 素数问题 (1)
- DFS (3)
- 二叉树 (1)
- 递归 (1)
- 图论 (5)
- 最小生成树 (5)
- 最短路径 (6)
- bell_flaod算法 (2)
- hash (3)
- 二分查找 (1)
- 搜索 (5)
- BFS (5)
- STL (3)
- 字符串hash (1)
- 拓扑排序 (1)
- 字典树 (4)
- 哈弗曼树 (1)
- KMP (7)
- 线段树 (9)
- 树状数组 (6)
- 全排列 (2)
- DP问题 (2)
- LCS (1)
- 最长不下降子序列 (2)
- 面试经验 (3)
题意:骑士周游问题,按照给你的走法,问骑士能否在p * q的棋盘上,从某个点出发不重复走遍棋盘每个点,如果能,输出骑士每步的位置(按字典序),如果不能,则输出impossible。 思路:很好的dfs,变1维为2维,但思路是差不多的,走法可能有多种,必须严格按照字典序走。 题目要求以"lexicographically"方式输出,也就是字典序...要以字典序输出路径,那么搜索的方向(我的程序记录位置的数组是path[]),以特殊的顺序排列了...这样只要每次从dfs(A,1)开始搜索,第一个成功遍历的路径一定是以字典序排列.注意回溯输出 代码如下:
关于DFS的问题未完待续…… #include<iostream>
using namespace std;
const int Max = 25;
bool visit[Max][Max], output;
int visit_num, p, q; // visit_num记录要走的点数。
char path[2 * Max]; // path[]记录路径。
int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2};
int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1}; // 字典序。
void dfs(int depth, int x, int y)
{
if(depth == visit_num)
{
for(int i = 0; i < 2 * depth; i ++)
cout << path[i];
cout << endl << endl;
output = true;
return;
}
for(int i = 0; i < 8 && output == false; i ++)
{
int new_x = x + dx[i];
int new_y = y + dy[i];
if(new_x > 0 && new_y > 0 && new_x <= q && new_y <= p && visit[new_y][new_x] == false)
{
visit[new_y][new_x] = true;
path[2 * depth ] = 'A' + new_x - 1;
path[2 * depth + 1] = '1' + new_y - 1;
dfs(depth + 1, new_x, new_y);
visit[new_y][new_x] = false;
}
}
}
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i ++)
{
cin >> p >> q;
cout << "Scenario #" << i << ':' << endl;
for(int y = 1; y <= p; y ++)
for(int x = 1; x <= q; x ++)
visit[y][x] = false;
visit_num = p * q;
output = false;
visit[1][1] = true;
path[0] = 'A';
path[1] = '1'; // 初始化,设A1为首位置(证明如果能走完的话,必存在一条起点为A1的路径)
dfs(1,1,1);
if(output == false)
cout << "impossible" << endl << endl;
}
return 0;
}
发表评论
-
虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
2013-08-29 14:34 857虚函数:虚函数是C++中用于实现多态(polymorphis ... -
排序算法总结
2013-05-17 11:00 856选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, ... -
poj 3122
2012-12-11 19:51 887题意:作者要开一个生日party,他现在拥有n块高度都为1 ... -
poj 3273
2012-12-11 16:49 1000题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份 ... -
字典树学习材料
2012-05-30 14:29 983字典树,又称单词查找树,Trie树,是一种树形结构,典型应 ... -
poj 1159
2012-05-28 19:08 1465题目大意:给你一段字符串,让你求出在中间最少加入几个字符 ... -
poj 3176
2012-05-28 14:47 1044大致题意: 输入一个n层的三角形,第i层有i个数,求从第 ... -
poj 1260
2012-05-28 09:54 1630题意解释: 有n个等级的珠宝,等级依次升高,等级越高价钱越高 ... -
poj 1836
2012-05-28 09:22 2732是POJ2533的扩展题。题意不难,令到原队列 ... -
poj 2533
2012-05-26 15:36 1290在做这道题目之前,首先让我们了解一下什么是LIS算法,LIS俗 ... -
poj 3267
2012-05-26 09:43 818从程序可以看出,第i个位置到L所删除的字符数,总是先取最坏情况 ... -
poj 1276
2012-05-25 16:20 2422题意: 这道题的意思是给你一堆钱,各种面值的都有,比 ... -
poj 1094
2012-05-25 13:54 1126题意:给出字母个数,和有限个有序对(a<b)求出能确定字 ... -
poj 3393
2012-05-23 17:00 1272大致题意: 科普文一篇,文章80%都是无用信息,因为 ... -
poj 3007
2012-05-14 10:21 1004大致题意: 给定一个字符串,从任意位置把它切为两半, ... -
poj 3096
2012-05-10 21:09 1034题意: 定义D-pairs表示取字符串s中相距为D的两个字母 ... -
poj 1426
2012-04-26 20:11 2181大致题意: 给出一个整数n,(1 <= n <= ... -
poj 1797
2012-04-24 15:05 1637题目大意是就是何处一个图,n个顶点和m条边,每个边都有最大承载 ... -
poj 1338
2012-04-23 10:20 1272题意:题目意思是求由2,3,5的乘积组成的数从大到小排列,从1 ... -
poj 2021
2012-04-19 15:00 966题意:Ted今年100岁,给出n对他家族的关系:“父 ...
相关推荐
poj 2488——dfs深度优先遍历 //给行数列数,求问能否遍历,给出字典序的一种遍历
标题中的“poj2488.rar_poj24_poj2488_方向模板法”指的是一个解决编程竞赛问题POJ2488的压缩文件,其中可能包含了解决该问题的代码示例。POJ是Programming Online Judge的缩写,是一个在线的编程竞赛平台,参与者...
【标题】"POJ2488-A Knight's Journey【骑士游历】" 【知识点解析】 本题是来自北京大学在线编程平台POJ的一道经典算法题——“骑士游历”。题目要求解决的是一个典型的图论问题,即在国际象棋棋盘上,骑士能否...
【标题】"北大POJ初级-所有题目AC代码+解题报告" 涉及的知识点主要集中在编程、算法和在线判题系统方面。北京大学(Peking University, 简称PKU)的POJ(Peking University Online Judge)是一个为计算机科学爱好者...
* 深度优先搜索:深度优先搜索是指解决问题的深度优先搜索算法,如 poj2488、poj3083、poj3009、poj1321、poj2251。 * 广度优先搜索:广度优先搜索是指解决问题的广度优先搜索算法,如 poj3278、poj1426、poj3126、...
【标题】"树状数组练习:POJ 2481(JAVA)" 是一篇关于使用树状数组(也称为线段树)解决编程竞赛问题的文章。这篇文章可能详细讲解了如何运用这种数据结构来解决特定的问题POJ 2481。POJ(Programming Online Judge)...
* 深度优先搜索:例如 poj2488、poj3083、poj3009、poj1321、poj2251。 * 广度优先搜索:例如 poj3278、poj1426、poj3126、poj3087、poj3414。 * 简单搜索技巧和剪枝:例如 poj2531、poj1416、poj2676、poj1129。...
- 深度优先搜索:如`poj2488, poj3083`。 - 广度优先搜索:如`poj3278, poj1426`。 - **动态规划** - 背包问题:如`poj1837, poj1276`。 - 简单DP:如`poj3267, poj1836`。 - **数学** - 组合数学:如`POJ...
1. **数论**:包括素数判定、欧几里得算法、扩展欧几里得算法等(poj2488, poj3083, poj3009, poj1321, poj2251)。 2. **组合数学**:如排列组合计算(poj3278, poj1426, poj3126, poj3087.poj3414)。 3. **矩阵...
- **例题**:poj2488, poj3083, poj3009, poj1321, poj2251 - **解释**:基本动态规划问题通常涉及状态转移方程的设计与实现。 #### 2. 复杂动态规划 - **例题**:poj3278, poj1426, poj3126, poj3087, poj3414 - *...
DFS和BFS不仅是图算法的核心,也是解决许多搜索问题的基础,如poj2488和poj3278所示。 #### 剪枝技术 在搜索过程中去除无效或低效的搜索路径,提高搜索效率,如poj2531和poj1416。 ### 五、动态规划 #### 背包...
- **深度优先搜索**:如poj2488,常用于解决树或图的遍历问题。 - **广度优先搜索**:如poj3278,适用于寻找最短路径。 - **搜索技巧与剪枝**:优化搜索过程,避免无效计算,如poj2531。 5. **动态规划**: - *...
- (poj2488, poj3083, poj3009, poj1321, poj2251):区间树、线段树等数据结构,用于处理区间查询问题。 6. **字典树(Trie)**: - (poj2513):一种高效的字符串检索数据结构。 ### 四、状态压缩 1. **状态...
poj2488、poj3083等是DFS的练习,poj3278、poj1426等是BFS的题目。 5. **动态规划**和**数学**:poj1837、poj1276是简单的动态规划问题,poj3267、poj1836等进一步强化了DP,poj3252、poj1850等则涉及组合数学,poj...
- POJ 2488、POJ 3083:利用DFS遍历图或树。 - POJ 3009、POJ 1321:基于DFS的问题求解。 #### 广度优先搜索 (BFS) - **题目示例**: - POJ 2251:BFS的应用场景。 #### 其他搜索算法 - **题目示例**: - POJ ...
### ACM新手刷题攻略之POJ ... - 推荐题目:[poj2488](https://vjudge.net/problem/POJ-2488)、[poj3083](https://vjudge.net/problem/POJ-3083)、[poj3009](https://vjudge.net/problem/POJ-3009)、[poj1321]...
- poj2488 - poj3083 - poj3009 - poj1321 - poj2251 - **应用场景**:适用于迷宫问题、连通性检测等问题。 **2. 广度优先搜索** - **定义**:一种逐层扩展的搜索方式,从根节点开始,依次考虑所有节点。 - **...
1. **深度优先搜索(DFS)**:遍历图或树的深度,如POJ2488、3083、3009、1321和2251。 2. **广度优先搜索(BFS)**:遍历图或树的宽度,如POJ3278、1426、3126、3087和3414。 3. **搜索技巧和剪枝**:提高搜索效率...
- **示例题目**: poj2488, poj3083, poj3009, poj1321, poj2251 #### 3. 后缀数组 - **内容**: 后缀数组是字符串的所有后缀按字典序排序后的数组。 - **示例题目**: poj3278, poj1426, poj3126, poj3087, poj3414 ...