题意
问从第一个状态转移到第二个状态需要至少几步
思路
按照题意bfs一遍即可
#include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; class sta{ public: char str[5]; int step; }; queue<sta>que; int vis[11][11][11][11]; bool getvis(sta a){ if(!vis[a.str[0]-'0'][a.str[1]-'0'][a.str[2]-'0'][a.str[3]-'0']){ vis[a.str[0]-'0'][a.str[1]-'0'][a.str[2]-'0'][a.str[3]-'0'] = 1; return 1; } return 0; } int main(){ int tcas,i; scanf("%d",&tcas); sta a, q; char ed[10]; while(tcas--){ scanf("%s%s",a.str,ed); // vis.clear(); memset(vis, 0, sizeof(vis)); while(!que.empty())que.pop(); a.step = 0; que.push(a); vis[a.str[0]-'0'][a.str[1]-'0'][a.str[2]-'0'][a.str[3]-'0'] = 1; while(!que.empty()){ q = que.front(); que.pop(); // cout<<q.str<<endl; if(strcmp(q.str,ed) == 0){ printf("%d\n",q.step); break; } a.step = q.step + 1; for(i = 0; i < 4; i++){ strcpy(a.str,q.str); a.str[i]++; if(a.str[i] == '9' + 1)a.str[i] = '1'; if(getvis(a))que.push(a); a.str[i] = q.str[i]; a.str[i] -- ; if(a.str[i] == '1' - 1)a.str[i] = '9'; if(getvis(a))que.push(a); if(i <= 2){ strcpy(a.str,q.str); char tmp; tmp = a.str[i]; a.str[i] = a.str[i+1]; a.str[i+1] = tmp; if(getvis(a))que.push(a); } } } } return 0; }
相关推荐
6. **搜索算法**:包括深度优先搜索(DFS)和广度优先搜索(BFS),是解决图论问题和树结构问题的重要工具。课件中会介绍它们的工作原理以及如何在实际问题中应用。 7. **组合博弈论**:这是博弈论的一个分支,研究...
这些文件是针对“hdoj”(HDU Online Judge)在线编程竞赛平台的解题代码,涵盖了题目编号从1000到1050的若干题目。HDU Online Judge是一个用于训练和测试编程技能的系统,用户可以提交代码解决各种算法问题,并获取...
总之,解决【HDOJ_1010 诱惑者的骨头】的关键在于理解图的概念,掌握图的遍历算法(DFS或BFS),并正确处理时间限制。通过编程实现这些算法,我们可以有效地判断是否存在一条满足条件的路径,从而解决这个问题。在...
【HDOJ暑期多校联赛第三场】是2013年举办的一场面向广大编程爱好者的在线竞赛,由IOI(国际奥林匹克信息学竞赛)的冠军CLJ设计题目,旨在提升参赛者的信息学和算法解决能力。这次比赛涵盖了丰富的编程和算法知识点,...
【HDOJ.zip_hduoj100题】是一个压缩包文件,包含了HDUOJ(杭州电子科技大学在线评测系统)的约100道编程练习题目及其源代码。这个资源对于想要提升编程技能,尤其是对算法和数据结构有深入学习需求的程序员来说,是...
这些文件是关于ACM(国际大学生程序设计竞赛,简称ICPC)比赛的解题报告,主要涵盖杭电(杭州电子科技大学)在线评测系统HDOJ(HDU Online Judge)中的题目2051到2099。在ACM竞赛中,参赛队伍需要解决一系列算法问题...
在本项目中,"C#可视化连连看实现 广度优先,动态规划,回溯" 是一个使用C#编程语言实现的连连看游戏,它融合了三种算法:广度优先搜索(BFS)、动态规划(DP)和回溯法。这些算法在解决复杂问题时非常有效,尤其是...
标题 "leetcode1198-Algorithm:HDOJ、力码" 暗示这是一个关于算法问题的讨论,特别是与LeetCode平台上的第1198题相关的。LeetCode是一个在线平台,提供各种编程挑战,帮助程序员提升算法技能。HDOJ(HDU Online ...
这道题可能与树形结构的遍历和查询有关,要求玩家掌握深度优先搜索(DFS)、广度优先搜索(BFS)等图遍历算法,以及树的动态规划应用。题目可能给出一棵树的结构和一些节点属性,要求玩家求解树上的路径长度、子树的...
另一个例子是HDOJ 1016 "Prime Ring Problem",虽然题目没有明确指出,但根据问题性质,我们可以推断出这是一个需要利用奇偶性剪枝的搜索问题。 另一方面,广度优先搜索(BFS)则是从初始状态开始,先访问所有距离...
HDOJ LeetCode 程序员面试金典 剑指OFFER PAT 甲级 乙级 ACWing 算法基础班 快排 归并 二分 高精度 前缀和差分 双指针 位运算 离散化 区间合并 单链表 双链表 栈 队列 单调栈 单调队列 KMP Tire 并查集 堆 哈希表 ...
5. **图论算法**:包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(如Dijkstra算法、Floyd算法)、最小生成树算法(如Prim算法、Kruskal算法)等,用于解决图相关的复杂问题。 ### 知识点三:实战...
建立失败指针通常通过深度优先搜索(DFS)或广度优先搜索(BFS)实现。在构建过程中,如果当前节点的子节点在失败链中找不到匹配,则将失败指针设置为父节点的失败指针,直至到达根节点。 3. 应用实例 - HDOJ 2222...
2. **搜索算法**:二分查找、深度优先搜索(DFS)、广度优先搜索(BFS)等。 3. **图论**:最短路径(Dijkstra、Floyd-Warshall、Bellman-Ford)、最小生成树(Prim、Kruskal)等。 4. **动态规划**:背包问题、最长...
12. **hdoj_offline_2008_07_16**:这可能是某个特定的离线比赛题目集,包含当年杭州电子科技大学在线评测系统(HDOJ)的题目。 这些PPT内容丰富,覆盖了算法和数学的多个方面,是准备编程竞赛和提升算法能力的宝贵...
"(lecture_08)搜索入门071214.rar"是关于搜索算法的初步介绍,包括深度优先搜索(DFS)和广度优先搜索(BFS),它们在解决图遍历和状态空间搜索等问题时十分关键。 通过学习这套教程,你不仅能够理解并掌握这些...
2. **图论**:深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(Dijkstra、Floyd-Warshall)、最小生成树(Prim、Kruskal)等。 3. **动态规划**:状态转移方程、记忆化搜索、贪心策略等,用于解决背包...
3. **搜索算法**:深度优先搜索(DFS)和广度优先搜索(BFS)是图论问题中的常用方法,同时也在树结构中应用广泛。二分查找则是处理有序数据的高效策略。 4. **动态规划**:这是一种将大问题分解为小问题的策略,常...
从给定的信息来看,这是一份关于杭州电子科技大学(简称杭电)在线编程平台HDU Online Judge(简称HDOJ)的题目分类列表。这份列表为新手提供了按类别刷题的指南,帮助他们系统地提升算法和编程能力。下面,我们将...