蓝桥杯提示运行错误,学霸的迷宫 求帮看看

TomorrowStronger TomorrowStronger 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
/*问题描述
  学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗。但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫。因为班长还有妹子要陪,磨刀不误砍柴功,他为了节约时间,从线人那里搞到了迷宫的地图,准备提前计算最短的路线。可是他现在正向妹子解释这件事情,于是就委托你帮他找一条最短的路线。
输入格式
  第一行两个整数n, m,为迷宫的长宽。
  接下来n行,每行m个数,数之间没有间隔,为0或1中的一个。0表示这个格子可以通过,1表示不可以。假设你现在已经在迷宫坐标(1,1)的地方,即左上角,迷宫的出口在(n,m)。每次移动时只能向上下左右4个方向移动到另外一个可以通过的格子里,每次移动算一步。数据保证(1,1),(n,m)可以通过。
输出格式
  第一行一个数为需要的最少步数K。
  第二行K个字符,每个字符∈{U,D,L,R},分别表示上下左右。如果有多条长度相同的最短路径,选择在此表示方法下字典序最小的一个。
样例输入
Input Sample 1:
3 3
001
100
110

Input Sample 2:
3 3
000
000
000
样例输出
Output Sample 1:
4
RDRD

Output Sample 2:
4
DDRR
数据规模和约定
  有20%的数据满足:1<=n,m<=10
  有50%的数据满足:1<=n,m<=50
  有100%的数据满足:1<=n,m<=500。
*/
#include<stdio.h>
#include<string.h>
#define UP 1
#define DOWN 2
#define RIGHT 3
#define LEFT 4
//起点 终点
int route(int n,int m,char (*map)[500]);
void result(int n,int m,int position ,char (*map)[500]);
char picture[500][500];
char picture_mark[500][500]={0};
int process_record[2][2500]={0};
char stack[10000];
int main(){
int n,m,i,position;
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<n;i++){
scanf("%s",picture[i]);
}
position=route(n,m,picture);
result(n,m,position,picture);

return 0;
}
int route(int n,int m,char (*map)[500])
{
int i,j,k,x,y;
int position_x,position_y; //搜索顺序 URLD
int last_x,last_y;
int where_p=0,where_q=0,transition=0,transition_record=0;
process_record[0][0]=0;
process_record[1][0]=0;
picture_mark[0][0]=-1; //初始化标记
while(1){

x=process_record[0][where_p];
y=process_record[1][where_p];
// printf("12 %d %d\n",where_p,where_q);
if(x==(n-1)&&y==(m-1)){break;}
if(map[x-1][y]=='0'&picture_mark[x-1][y]==0&&(x-1)>=0){
where_q++;
process_record[0][where_q]=x-1;
process_record[1][where_q]=y;
picture_mark[x][y+1]=-1;
}

if(map[x][y+1]=='0'&&picture_mark[x][y+1]==0&&(y+1)<m){
where_q++;
process_record[0][where_q]=x;
process_record[1][where_q]=y+1;
picture_mark[x][y+1]=-1;

}
if(map[x][y-1]=='0'&&picture_mark[x][y-1]==0&&(y-1)>=0){
where_q++;
process_record[0][where_q]=x;
process_record[1][where_q]=y-1;
picture_mark[x][y-1]=-1;
}
if(map[x+1][y]=='0'&&picture_mark[x+1][y]==0&&(x+1)<n){ //字符0
where_q++;
process_record[0][where_q]=x+1;
process_record[1][where_q]=y;
picture_mark[x+1][y]=-1; //遍历标记
}
where_p++;

}
return where_p;
}
//逆向搜索结果
void result(int n,int m,int position ,char (*map)[500]){
int i,j;
int difference_x,difference_y;
int start=0,position_q,position_num;
position_num=position;
position_q=position-1;
while(1){
difference_x=process_record[0][position]-process_record[0][position_q];
difference_y=process_record[1][position]-process_record[1][position_q];

if(difference_x==-1&&difference_y==0){ //反着来相邻的只会有一个
stack[start]='U';
start++;
position=position_q;
}
else if(difference_x==0&&difference_y==-1){
stack[start]='L';
start++;
position=position_q;
}
else if(difference_x==0&&difference_y==1){
stack[start]='R';
start++;
position=position_q;
}
else if(difference_x==1&&difference_y==0){
stack[start]='D';
start++;
position=position_q;
}
if(position==0){break;}
position_q--;
}
//输出
start--;
printf("%d\n",start+1);
for(i=start;i>=0;i--){
printf("%c",stack[i]);
}


}
...全文

相关推荐

算法竞赛基于BFS与强化学习的迷宫寻路技术解析:蓝桥杯最短路径与字典序优化系统设计

内容概要:本文系统解析了蓝桥杯竞赛中经典的迷宫寻路问题,围绕“学霸的迷宫”这一真题展开,深入讲解从基础BFS到强化学习的多种解法。文章涵盖题目背景、算法选型(BFS、DFS、A*、Q-learning)、数据结构设计、多语言实现(Python、C++、Java)、输入输出优化及常见错误排查,并提供分层优化策略(如空间复用、双向BFS、路径压缩)和全场景测试用例。特别强调字典序路径输出、大规模数据处理与竞赛级性能优化,最后展望未来命题趋势如动态障碍、多智能体协作等。; 适合人群:具备一定算法基础,准备参加蓝桥杯等程序设计竞赛的初、中级选手,尤其是工作或学习1-3年、希望提升实战能力的研发或学生群体。; 使用场景及目标:①掌握迷宫类最短路径问题的标准解法与优化技巧;②理解BFS在竞赛中的高效实现方式及字典序路径生成机制;③拓展强化学习在动态路径规划中的应用思路;④备战蓝桥杯省赛与国赛,突破中高难度题目瓶颈。; 阅读建议:建议结合文中提供的多语言代码模板进行动手实践,重点理解BFS的路径记录与状态扩展逻辑,优先掌握基础优化技巧,再逐步深入双向BFS与A*等进阶方法,同时利用给出的测试用例验证代码正确性与鲁棒性。

克朗网络安全实验室

【复现IEEE二区文献】基于组件连接法的多控制策略构网型逆变器稳定性分析与参数整定方法研究(Matlab代码实现)

【复现IEEE二区文献】基于组件连接法的多控制策略构网型逆变器稳定性分析与参数整定方法研究(Matlab代码实现)

荔枝科研社

26-基于51单片机的智能热水器控制系统设计(全套资料)原理图+仿真.rar

项目26-基于51单片机的智能热水器控制系统设计 资料包括Proteus仿真+Keil程序+Altium Designer原理图+软件安装包+参考设计说明书+答辩PPT+设计流程图,保证资料完整性! 功能: (1)本设计以51单片机AT89C52为核心控制器,精准协调各模块运行,为智能热水器控制系统提供稳定控制基础。 (2)采用DS18B20温度传感器,精确测量水温,并将数据传输给单片机,以便实现精准的温度调控。 (3)运用DHT11传感器,实时检测环境温湿度,为热水器根据环境变化调整工作模式提供参考依据。 (4)配备LCD1液晶显示屏,清晰呈现温度设定值、实际水温等参数,方便用户直观了解热水器工作状态。 (5)通过控制蜂鸣器、继电器等执行装置,可实现水温报警、加热控制等功能,资料助你掌握该系统设计。

创界工坊工作室

数据分析可视化实战.html

城市共享单车 30 天骑行分析:清洗、指标、图表,以及一个能回答问题的仪表盘。 这份报告按真实项目的顺序展开:先把业务问题变成可计算的指标,再处理脏数据,最后才画图。所有数据均为合成样例,用于演示方法;文中的结论只对这份样例成立。

巍巍大别山

【tess4j识别图形验证码所需资源包】

【tess4j识别图形验证码所需资源包】

星陨月落阳灭
评论
收藏 已收藏
分享
返回顶部
TomorrowStronger
新手乐园 33,315 成员 41,769 内容