- 浏览: 202506 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (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)
题意: 给定两个素数(四位数),求第一个数经过几次转换能够得到第二个素数。转换方式:是变换数中某一位的数字(第一位不能为零,其他的变换数字是0~~9),变换之后的数也为素数。 思路:bfs,搜索求最短路径,很容易就想到广度优先搜索;因为广度优先搜索,第一次搜到得到的步数就是最少的步数。为了提高判断的时候的速率;打了一个素数表。 不说了直接看代码:
#include<iostream>
#include<cmath>
#include<queue>
using namespace std;
const int Max = 10005;
bool prime[Max], visit[Max];
void funprime()
{
for(int num = 1000; num < 10000; num ++)
{
prime[num] = true;
for(int i = 2; i <= sqrt(float(num)); i ++)
if(num % i == 0)
{
prime[num] = false;
break;
}
}
} // 先打出一张素数表。
int izero(int num, int n)
{
int m[5], i; // 运用数组m[5]存放各位数,解决了许多繁琐,自认为很巧妙。
for(i = 1; i <= 4; i ++)
{
m[i] = num % 10;
num = num / 10;
}
m[n] = 0;
for(i = 1; i <= 4; i ++)
num += m[i] * pow(10.0, i - 1);
return num;
} // 对num的从右算起第n位置0,如num=8792,n=3,则返回8092。
int main()
{
int n, sta, end;
funprime();
cin >> n;
while(n --)
{
cin >> sta >> end;
if(sta == end)
{
cout << '0' << endl;
continue;
}
bool fine = false;
int steps = 0;
queue<int> pri;
pri.push(sta);
memset(visit, false, sizeof(visit));
visit[sta] = true;
while(!pri.empty() && !fine)
{
int t = pri.size();
steps ++;
while(t --)
{
int num = pri.front();
pri.pop();
int i;
for( i = 1; i <= 4; i ++)
{
int n = izero(num, i);
int j;
for( j = 0; j <= 9; j ++)
{
int now = n + j * pow(10.0, i - 1);
if(now == end)
{
fine = true; // 一开始写成fine == true,调了很久。
break;
}
else if(prime[now] && !visit[now])
{
pri.push(now);
visit[now] = true;
}
}
}
}
}
if(fine)
cout << steps << endl;
else cout << "Impossible" << endl;
}
return 0;
}
发表评论
-
虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
2013-08-29 14:34 842虚函数:虚函数是C++中用于实现多态(polymorphis ... -
排序算法总结
2013-05-17 11:00 843选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, ... -
poj 3122
2012-12-11 19:51 870题意:作者要开一个生日party,他现在拥有n块高度都为1 ... -
poj 3273
2012-12-11 16:49 987题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份 ... -
字典树学习材料
2012-05-30 14:29 970字典树,又称单词查找树,Trie树,是一种树形结构,典型应 ... -
poj 1159
2012-05-28 19:08 1447题目大意:给你一段字符串,让你求出在中间最少加入几个字符 ... -
poj 3176
2012-05-28 14:47 1019大致题意: 输入一个n层的三角形,第i层有i个数,求从第 ... -
poj 1260
2012-05-28 09:54 1615题意解释: 有n个等级的珠宝,等级依次升高,等级越高价钱越高 ... -
poj 1836
2012-05-28 09:22 2715是POJ2533的扩展题。题意不难,令到原队列 ... -
poj 2533
2012-05-26 15:36 1274在做这道题目之前,首先让我们了解一下什么是LIS算法,LIS俗 ... -
poj 3267
2012-05-26 09:43 805从程序可以看出,第i个位置到L所删除的字符数,总是先取最坏情况 ... -
poj 1276
2012-05-25 16:20 2397题意: 这道题的意思是给你一堆钱,各种面值的都有,比 ... -
poj 1094
2012-05-25 13:54 1108题意:给出字母个数,和有限个有序对(a<b)求出能确定字 ... -
poj 3393
2012-05-23 17:00 1260大致题意: 科普文一篇,文章80%都是无用信息,因为 ... -
poj 3007
2012-05-14 10:21 994大致题意: 给定一个字符串,从任意位置把它切为两半, ... -
poj 3096
2012-05-10 21:09 1012题意: 定义D-pairs表示取字符串s中相距为D的两个字母 ... -
poj 1426
2012-04-26 20:11 2172大致题意: 给出一个整数n,(1 <= n <= ... -
poj 1797
2012-04-24 15:05 1627题目大意是就是何处一个图,n个顶点和m条边,每个边都有最大承载 ... -
poj 1338
2012-04-23 10:20 1261题意:题目意思是求由2,3,5的乘积组成的数从大到小排列,从1 ... -
poj 2021
2012-04-19 15:00 952题意:Ted今年100岁,给出n对他家族的关系:“父 ...
相关推荐
【标题】"POJ3126-Prime Path" 是北京大学在线编程平台POJ上的一道题目,主要涉及算法和数论方面的知识。这道题目要求我们寻找一条从图中的某个节点出发,经过一系列相邻节点,且每个节点的值都是素数的路径。 ...
* 广度优先搜索:广度优先搜索是指解决问题的广度优先搜索算法,如 poj3278、poj1426、poj3126、poj3087、poj3414。 * 简单搜索技巧和剪枝:简单搜索技巧和剪枝是指解决问题的简单搜索技巧和剪枝算法,如 poj2531、...
* 广度优先搜索:例如 poj3278、poj1426、poj3126、poj3087、poj3414。 * 简单搜索技巧和剪枝:例如 poj2531、poj1416、poj2676、poj1129。 5. 动态规划: * 背包问题:例如 poj1837、poj1276。 * 类型 DP:...
- **例题**:poj3278, poj1426, poj3126, poj3087, poj3414 - **解释**:复杂动态规划问题可能涉及多维状态转移、记忆化搜索等技巧。 #### 3. 状态压缩动态规划 - **例题**:poj2531, poj1416, poj2676, poj1129 - ...
- POJ 3126、POJ 3087:复杂搜索策略解决实际问题。 ### 动态规划 #### 一维动态规划 - **题目示例**: - POJ 1837、POJ 1276:基础动态规划问题。 #### 多维动态规划 - **题目示例**: - POJ 3267、POJ 1836...
### ACM新手刷题攻略之POJ ... - 推荐题目:[poj3278](https://vjudge.net/problem/POJ-3278)、[poj1426](https://vjudge.net/problem/POJ-1426)、[poj3126](https://vjudge.net/problem/POJ-3126)、[poj3087]...
2. **组合数学**:如排列组合计算(poj3278, poj1426, poj3126, poj3087.poj3414)。 3. **矩阵运算**:矩阵乘法和矩阵快速幂(poj2531, poj1416, poj2676, 1129)。 ### 五、状态压缩 1. **状态压缩动态规划**:...
- poj3126 - poj2251 - poj2243 - poj3352 - poj1111 - poj3051 - poj1129 - poj2907 - **应用场景**:适用于搜索、连通性检测等问题。 **2. 最短路径算法** - **定义**:包括 Dijkstra 算法、Bellman-Ford...
- **示例题目**: poj3278, poj1426, poj3126, poj3087, poj3414 #### 4. 字符串搜索 - **内容**: 包括后缀树、AC自动机等字符串搜索算法。 - **示例题目**: poj2531, poj1416, poj2676, poj1129 ### 五、数学 ##...
* 广度优先搜索:poj3278, poj1426, poj3126, poj3087, poj3414 * 简单搜索技巧和剪枝:poj2531, poj1416, poj2676, poj1129 五、动态规划 * 背包问题:poj1837, poj1276 * 类似表的简单 DP:poj3267, poj1836, ...
(2) 广度优先搜索:poj3278, poj1426, poj3126, poj3087, poj3414 (3) 简单搜索技巧和剪枝:poj2531, poj1416, poj2676, 1129 五、动态规划 本部分涵盖了动态规划,包括背包问题、简单DP和其他DP问题。 (1) 背包...
poj2488、poj3083和poj3009是DFS的例子,而poj3278、poj1426和poj3126则侧重于BFS。poj2531、poj1416和poj2676等题目则包含搜索技巧和剪枝的实践。 五、动态规划 动态规划是一种高效解决问题的方法,常用于背包问题...
- 示例题目:poj3278, poj1426, poj3126, poj3087, poj3414 3. **矩阵优化** - 示例题目:poj2531, poj1416, poj2676, poj1129 #### 数学 1. **组合数学** - **组合数计算** - **容斥原理** - **递推关系** ...
例题:poj3278、poj1426、poj3126、poj3087、poj3414。 * 简单搜索技巧和剪枝:简单搜索技巧和剪枝是指用于优化搜索算法的技术。例题:poj2531、poj1416、poj2676、poj1129。 五、动态规划 * 背包问题:背包问题是...
- 示例题目:POJ 3278, POJ 1426, POJ 3126, POJ 3087, POJ 3414 - **树形DP**:针对树形结构的问题,利用子问题的解来求解原问题。 - 示例题目:POJ 2531, POJ 1416, POJ 2676, 1129 ##### 4. 几何问题 - **...
- POJ 3278, POJ 1426, POJ 3126, POJ 3087, POJ 3414 区间动态规划是解决具有区间依赖关系问题的有效方法,如股票买卖问题。 3. **矩阵链乘法** - POJ 2531, POJ 1416, POJ 2676, POJ 1129 矩阵链乘法问题...
- POJ 3126 - POJ 3087 - POJ 3414 ### 概率统计 #### 1. 概率计算 - **描述**:概率计算涉及概率理论的基本概念和方法。 - **应用场景**:赌博游戏、风险评估等。 - **相关题目**: - POJ 3252 - POJ 1850 ...
- **示例题目**: POJ 3278, POJ 1426, POJ 3126, POJ 3087, POJ 3414 - **注意事项**: 使用队列来存储待访问节点。 **3. 搜索技巧与剪枝** - **定义**: 通过剪枝减少不必要的搜索空间。 - **应用场景**: 搜索...
2. **AC自动机**(如poj3278, poj1426, poj3126, poj3087, poj3414):多模式字符串匹配算法,用于同时匹配多个模式字符串,适用于病毒扫描、关键词过滤等场景。 3. **状态压缩DP**(如poj2531, poj1416, poj2676, ...
3126 POJ 3414 POJ 2251 简单搜索技巧和剪枝 POJ 1010 :star: POJ 2362 POJ 1011(搜索+剪枝) POJ 1416 POJ 2676 POJ 1129:white_question_mark: 数据结构 串 POJ 1016 POJ 1035 POJ 3080 POJ 1936 排序(快排) ...