poj 3126 Prime Path (bfs)

POJ 3126 Prime Path POJ 3126 Prime Path 题目大意: 给出两个四位数的素数a,b,求从a变到b最少要花几步?每一步只能将a中的一位改变,且改变后的数也要是素数。 具体思路: 埃氏筛+BFS 先求出1000-9999间的素数(可用素数筛,非常快捷)不懂的可看这篇博客筛选素数:埃氏筛选、欧拉筛选(线性筛选)、区间筛选 再用bfs搜索,每次变换一个数字,判断是否为质数,并更新变换次数 注意排除前导为0的情... 阅读详情

一学期前看题解敲的:

#include<iostream>
#include<queue>
#include<cstring>
#include<cstdlib>
#include<cmath>

using namespace std;
int n;
int prime[10010] = {0};
int book[10010];
int step[10010];

int bfs(int sou, int des) {
	queue<int> q;
	memset(book, 0, sizeof(book));
	memset(step, 0, sizeof(step));
	q.push(sou);
	book[sou] = 1;
	while(!q.empty()) {
		int x = q.front();
		q.pop();
		int t[4];
		t[0] = x / 1000;
		t[1] = x % 1000 / 100;
		t[2] = x % 100 / 10;
		t[3] = x % 10;
		int i, j, tmp;
		for(i = 0; i < 4; i++) {
			tmp = t[i];
			for(j = 0; j < 10; j++) {
				if(tmp != j) {
					t[i] = j;
					int y = t[3] + t[2] * 10 + t[1] * 100 + t[0] * 1000;
					if(!book[y] && prime[y]) {
						q.push(y);
						step[y] = step[x] + 1;
						book[y] = 1;
					}
					if(y == des) return step[y];
				}
			}
			t[i] = tmp;
		}
		if(x == des) return step[x];
	}
	return -1;
}

int main() {
	prime[0] = prime[1] = 1;
	int i, j;
	for(i = 0; i < 10010; i++) {
		prime[i] = 1;
	}
	for(i = 2; i <= sqrt(10010.0); i++) {
		if(prime[i]) {
			for(j = i + i; j < 10010; j += i) {
				prime[j] = 0;
			}
		}
	}	
	for(i = 0; i < 1000; i++) {
		prime[i] = 0;
	}
	cin >> n;
	while(n--) {
		int a, b;
		cin >> a >> b;
		int t = bfs(a, b);
		if(t == -1) cout << "Impossible" << endl;
		else cout << t << endl;
	}	
	return 0;
}


一学期后自己写的:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
using namespace std;
int isprime[10010];
int vis[10010];
void init() {
	int i, j;
	for(i = 0; i < 10000; i++) {
		isprime[i] = 1;
	}
	isprime[0] = isprime[1] = 0;
	for(i = 2; i <= sqrt(10000); i++) {
		if(isprime[i] == 1) {
			for(j = i + i; j < 10000; j += i) {
				isprime[j] = 0;
			}
		}
	}
	for(i = 0; i <= 999; i++) {
		isprime[i] = 0;
	}
}
int a, b;
struct node {
	int num, step;
};
int bfs() {
	queue<node> q;
	node now, next;
	now.num = a, now.step = 0;
	q.push(now);
	vis[now.num] = 1;
	while(!q.empty()) {
		now = q.front();
		q.pop();
		int i, j;
		if(now.num == b) {
			return now.step;
		}
		for(i = 0; i < 4; i++) {
			for(j = 0; j <= 9; j++) {
				if(now.num % (int)pow(10, i + 1) / (int)pow(10, i) == j) continue;
				int t1 = now.num / (int)pow(10, i + 1);
				int t2 = now.num % (int)pow(10, i);
				next.num = t1 * (int)pow(10, i + 1) + j * (int)pow(10, i) + t2;
				next.step = now.step + 1;
				if(vis[next.num] == 0 && isprime[next.num] == 1) {
					vis[next.num] = 1;
					q.push(next);
				}
			}
		}
	}
	return -1;
}
int main() {
	init();
    int n;
    scanf("%d", &n);
    while(n--) {
    	memset(vis, 0, sizeof(vis));
	    scanf("%d %d", &a, &b);
	    printf("%d\n", bfs());
	}
    return 0;
}

说明还是有提高的。。。多复习。

DDR5 SODIMM标准解读:262 Pin背后的设计与选购指南 DDR5内存时代,笔记本内存条形态从DDR4的260 Pin升级为262 Pin,这背后是供电架构从主板下放到内存条的变革。JEDEC PS-006A-2022标准定义了DDR5 SODIMM的引脚排列、电气参数、机械尺寸等底层规范,是硬件工程师和普通用户理解内存兼容性、性能边界的关键依据。从PMIC电源管理到双通道内部设计,从Speed Bin时序到On-Die ECC,标准不仅解释了为什么DDR5与DDR4物理不兼容,也揭示了内存选购中频率、时序与散热之间的真实关系。本文以该标准为线索,梳理引脚定义、关 阅读详情

相关推荐

UE4 专用服务器搭建(UE4.27为例)

专用服务器、DS服务器

mimo134的博客 2774

poj - 3126 - Prime Path

题意:从一个四位素数变到另一个四位素数,每次只能改到一个位的数字,且改动后仍是一个四位素数,问最少需要几步。 题目链接:http://poj.org/problem?id=3126 ——>>直接广搜。 #include #include #include using namespace std; const int maxn = 9999 + 10; int MAP[maxn],

无节操 1004

RK3566添加ffpeg【Buildroot系统】

有很多人都发现了RK3566系列的芯片是不可以直接使用ffmpeg官网源码的!会报错: Not a video capture device. /dev/video0: No such device 接下来我们就来解决这个问题!!

honmy18的博客 4068

POJ3126 Prime Path(BFS)

题目链接:POJ 3126 题意:每一组测试数据给定2个4位数的素数(第一位不为0),如1033,8179,要求每次只能变化一位,求从1033变化到8179需要多少步?这种情况的方案如下,需要6步 1033 1733 3733 3739 3779 8779 8179 Input One line with a positive number: the number of test cases (...

ha_ha_ha233的博客 383

从Microchip SDK到STM32实战:手把手教你移植LAN9252 EtherCAT从站驱动(含EEPROM配置避坑)

本文详细介绍了如何将Microchip SDK中的LAN9252 EtherCAT从站驱动移植到STM32F407平台,包括FSMC接口配置、中断处理适配和EEPROM配置等关键步骤。通过实战指南和避坑技巧,帮助开发者快速实现高性能EtherCAT从站设备的开发,适用于工业自动化领域。

weixin_29197835的博客 446

深入解析6T SRAM的读写机制与性能优化

本文深入解析了6T SRAM的基本结构与核心工作原理,详细阐述了其读写操作的具体时序与机制。文章重点探讨了在先进工艺下面临的读写稳定性、写入能力等性能挑战,并系统介绍了写入辅助与读取辅助等关键优化技术,旨在提升SRAM的可靠性与整体性能。

weixin_29205061的博客 1224

poj3126 - Prime Path

想看更多的解题报告: http://blog.youkuaiyun.com/wangjian8006/article/details/7870410                                      转载请注明出处:http://blog.youkuaiyun.com/wangjian8006 题目大意:                 给定两个素数a b,求a变幻到b需要几步

贰圣 7690

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2264

poj---3126---Prime Path(简单搜索)

3126---Prime Path题目思路题解 题目 思路 这道题目就是寻找一个四位素数到另一个四位素数的最小改变次数,每次只能改变一个数字,且改过后的数仍然是素数,分析过后就简单了,首先打一张素数表,然后我们再通过bfs改变位数,直到变为最终数字,记录步数,改变的时候枚举0-9每一位数字就可以了(个位可以只枚举奇数,千位不能存在0)。 题解 #include <iostream> #include <cstdio> #include <algorithm> #i

qq_45144394的博客 482

【第24例】华为 IPD 体系 | RMT 需求管理团队

RMT需求管理团队

产品线负责人 1763

RAG 实战:LangChain + 向量数据库构建知识问答系统

从文档加载、分割、嵌入到检索增强生成,完整实现一个基于本地文档的知识问答系统。

kaixin110a的博客 186

F - Prime Path POJ - 3126(36种情况的进阶BFS)

F - Prime Path POJ - 3126 The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offi...

石旭先森的博客 404

YOLO26涨点改进 | 细节涨点篇 | 源自SCI一区 | YOLO26引入HWD小波下采样模块,而不会显著增加计算开销,(适合小目标分割任务、小目标检测任务)

本文提出了一种基于Haar小波变换的下采样模块HWD,用于改进YOLO26目标检测性能。HWD模块通过小波变换降低特征图分辨率,同时将空间信息编码到通道维度,有效保留了关键信息。相比传统下采样方法,HWD能显著减少信息不确定性,提升小目标检测精度。实验表明,该模块可无缝集成到CNN架构中,不增加计算开销。文章详细介绍了HWD的实现原理、代码结构以及在YOLO26中的集成方法,并提供了两种改进版yaml配置文件。该创新模块已在多种数据集上验证有效,特别适合语义分割和目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 399

(BFS)POJ3126Prime Path

POJ3126Prime Path 题意&思路: 给两个数,又第一个数改变到第二个数的奇数路径最少是多少。每次只能改变一位,且不含前导0,每次改变后的数都要为奇数。 先把素数筛出来,然后按位子改变bfs即可,第一位不能为0以及最后一位一定不可能是偶数。 代码: #include<iostream> #include<stdio.h> #include<std...

Z7784562的博客 1519

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Prime Path POJ - 3126 bfs

Prime Path POJ - 3126 最近一直在联系kuangbin的题目,发现自己有好多没有掌握的东西。。 题目大义 给定一个两个4位素数,一个是起始素数,一个是终止素数,从起始素数开始改变素数中的一位数字,保证其仍为素数,再从这个改变后的素数开始再改变一位数,仍保证其是素数,知道转换到终止素数,问最小的转换次数是多少? 这种搜索题看到最小转换次数就知道用bfs去做,由于我们要维护转换时的素数性质,所以我们还要得到从1000 到 10000 之间的素数 于是这道题就是素数筛+bfs 由于这里只

qq_35423505的博客 234

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ 3126 Prime Path bfs

http://poj.org/problem?id=3126 The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their ...

xiji333的博客 264

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

BFS POJ 3126 Prime Path

题目传送门 1 /* 2 题意:从一个数到另外一个数,每次改变一个数字,且每次是素数 3 BFS:先预处理1000到9999的素数,简单BFS一下。我没输出Impossible都AC,数据有点弱 4 */ 5 /************************************************ 6 Author ...

weixin_33717117的博客 137

POJ 3126 Prime Path (BFS)

POJ 3126 Prime Path (BFS) 【题目链接】http://poj.org/problem?id=3126 【题目大意】 给你两个四位数的素数,通过改变其中的一个数,每次只允许改变一位数,而且改变之后的数也必须是素数,问最少通过改变几次变成后一个四位的素数。如果不能改变成后面的四位素数则输出Impossible 【题解】 不罚时,每次改变四位中的一位入队; 可以先处理出四位素数,...

ding_ning123的博客 177

Prime Path POJ - 3126 bfs

一、内容 题意:给定2个质数,代表开头和结尾,每次只能改变一位上的数字,且改变后的数也要是质数,求最少几次能变成结尾的数字。 二、思路 先筛选1000-9999的质数存在is_peime里面。 bfs搜索将每位上的数字进行改变,枚举下所有情况,若改变后的数字是质数且未访问过就入队。 通过整除和取余得到某位上的数字,然后再修改成需要的数。 三、代码 #include <cstdio>...

Tizzi的博客 911

POJ 3126 Prime Path(BFS)

题目链接:POJ 3126 Prime Path 题意:给出两个四位素数,要求从第一个素数变到第二个素数。            变换规则:每次只能改变四位数中的一个数,并且要求变换后的数依旧是素数。            求最少的变换次数。 思路:先把1000-10000之间的数判断好是不是素数,之后直接用。            然后BFS搜索,每次变换一个数,变换后的数要求是素数,

Must so 392

poj 3126Prime Path--BFS

题目来源:poj 3126 大致题意: 给定两个四位素数a b,要求把a变换到b 变换的过程要保证 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数 与 前一步得到的素数 只能有一个位不同,而且每步得到的素数都不能重复。 求从a到b最少需要的变换次数。无法变换则输出Impossible。 #include <iostream> #include <que...

圣托里尼的日落啊~的博客 249

poj 3126 Prime Path bfs

题目链接:http://poj.org/problem?id=3126 Prime Path Time Limit:1000MS Memory Limit:65536K Total Submissions:32036 Accepted:17373 Description The ministers of the cab...

weixin_30641465的博客 104

POJ 3126 Prime Path BFS

题意:给你2个素数,a,b,问你a经过多少次变换才能变成b. 一次变换只能改变a的一个位,并且改变后的a必须是素数。 思路:简单bfs。注意每次改变的a。 #include #include #include #include #include #include #include #include #include #include #include #includ

just_water 964

【ACM】【BFS】POJ 3126 Prime Path

Prime Path 点我前往题目链接 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 32181 Accepted: 17439 Description The ministers of the cabinet were quite upset by the message fro...

lesileqin的博客 319

poj3126 prime path bfs

题目链接:http://poj.org/problem?id=3126 题意:给定两个范围在【1000,9999】的两个素数,问从一个素数到另外一个素数需要多少歩,每次只能改变一个数,且过渡的数必须是素数。例如:1033 ——1733——3733——3739——3779——8779——8179。 分析:很经典的广搜题,谈到广搜不得不说的是已经搜索过的状态的标记,可以用visit数组,然后就是

Na_OH的博客 525

Prime Path POJ - 3126(BFS)

Prime Path POJ - 3126 https://vjudge.net/problem/POJ-3126 题意: 给一个四位数n,每次可以改变一位数,而且改变后的这个数必须是四位的素数,求最少改变几次可以变到m。 Sample Input 3 1033 8179 1373 8017 1033 1033 Sample Output 6 7 0 样例一: 1033 1733 3733 ...

NaNa 250
上一篇: poj 1426
下一篇: qduoj 生化危机
Strokess
博客等级 码龄11年 62粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值