调试心得——以HDU-1010为例

《解锁GCC版本选择的奥秘:从入门到精通》 GCC 版本的选择是一项复杂而关键的决策,犹如一场精心策划的战略布局,贯穿于软件开发的整个生命周期。从项目需求与兼容性的深度考量,到性能与稳定性的权衡抉择,再到硬件与系统适配的精准对接,每一个环节都紧密相连,相互影响。在游戏开发行业,对性能的极致追求促使开发者青睐较新的 GCC 版本,以实现更流畅的游戏体验和更震撼的视觉效果;科学计算领域则依赖于 GCC 版本对复杂数学运算的高效优化,以应对大规模数据处理的挑战;嵌入式开发行业因硬件资源的限制和对稳定性的严苛要求,通常选择经过长期验证的稳定版本; 阅读详情

一道小题,调试了将近一个小时——本打算今天多做两道题,目前来看目标无法实现。

这道题我几个月之前做过,今天重做一遍,结果TLE。于是我翻出几个月之前的AC代码,慢慢地把AC代码改成TLE代码,最后在群里网友的帮助下,找到了BUG。最终的AC代码是这样的,你可以从中看出之前的BUG。

/*
 * hdu-1010 tempter of the bone
 * mike-w
 * 2012-3-24
 ******************************************************
 * lisence: cc3.0
 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_SIZE 10

char maze[MAX_SIZE][MAX_SIZE];
int tag[MAX_SIZE][MAX_SIZE];
int dd[4][2]={1,0,-1,0,0,1,0,-1};
int N,M,T,FLAG;

int search(int x, int y, int d)
{
    if(d>=T)
    {
        if(maze[x][y]=='D')
            FLAG=1;
		return 0;
	}
    /*tag[x][y]=1;*/
	maze[x][y]='X';
   	int i,x1,y1;
    for(i=0;i<4&&!FLAG;i++)
    {
        x1=x+dd[i][0];
        y1=y+dd[i][1];
        if(x1>=0 && x1<N && y1>=0 && y1<M
			&& (maze[x1][y1]=='.' || (d==T-1 && maze[x1][y1]=='D'))
            /*&& !tag[x1][y1]*/)
		   	search(x1,y1,d+1);
    }
    /*tag[x][y]=0;*/
	maze[x][y]='.';
    return 0;
}
        
int main(void)
{
#ifndef ONLINE_JUDGE
    freopen("in","r",stdin);
#endif
    int i,j,sx,sy,tx,ty,area;
    while(scanf("%d%d%d",&N,&M,&T),M||N||T)
    {
        memset(tag,0,sizeof(tag));
        for(i=0;i<N;i++)
            scanf("%s",maze[i]);
        area=0;
        for(i=0;i<N;i++)
            for(j=0;j<M;j++)
            {
                if(maze[i][j]=='.')
                    area++;
                if(maze[i][j]=='S')
                    sx=i,sy=j;
                if(maze[i][j]=='D')
                    tx=i,ty=j;
            }
		FLAG=0;
		maze[sx][sy]='X';
        if(((abs(sx-tx)+abs(sy-ty))&0x1) != (T&0x1))
            puts("NO");
        else if(area+1<T)
            puts("NO");
        else
            puts((search(sx,sy,0),FLAG)?"YES":"NO");
    }
    return 0;
}

程序里的BUG是,程序执行过程中把D点修改成了空白点,进而导致TLE。所以回溯的时候要仔细审查操作前后的变化,自己是否把所有状态都进行了恢复。

又是印象深刻的一课。

基于Simulink的电源纹波抑制仿真 电源纹波(Power Supply Ripple)是指直流电源输出中存在的交流分量。纹波的存在会导致电压波动,进而影响负载设备的性能和寿命。为了确保高质量的电源输出,通常需要设计有效的滤波电路来抑制纹波。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电源纹波抑制方案。本教程将详细介绍如何使用 Simulink 进行电源纹波抑制的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行电源纹波抑制的仿真实例。背景介绍:理解电源纹波及其对电力电子系统的影响。仿真建模过程。 阅读详情

相关推荐

海量Embedding进行相似度查询和比较的方法

这个是在科研中的现实需求。例如每一个源代码文件,我们可以生成一个embedding,如果有超过5000万个embedding(例如用BERT生成5000万个embedding),怎么样有效地计算相似性呢(例如有5000个positive的embedding,想在5000万个中找到类似的)。 简单介绍一下我尝试的结果:如果直接用torch.cosine_similarity,我手里的数据估计至少要处理两个月。这时候就想到了用LSH -- Locality Sensitive Hashing,但是我之前并没怎

qysh123的专栏 4566

HDU(1010)bfs+剪枝 Tempter of the Bone

New~ 欢迎参加2016多校联合训练的同学们~                                         Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis

昨日明眸 1492

WandB本地部署踩坑指南:从Docker启动到License更新的完整流程(附常见错误解决方案)

本文详细介绍了Weights & Biases(WandB)机器学习实验管理平台的本地化部署全流程,涵盖从Docker环境搭建、许可证管理到常见错误排查的实战经验。针对企业级应用场景,文章还提供了性能优化、高可用架构设计及开源替代方案Trackio的评估与迁移策略,为构建安全、可控的内部实验追踪平台提供完整解决方案。

potato的博客 567

HDU1010 关于DFS

Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 63147    Accepted Submission(s): 17286 Problem Description The

不吐槽会死星人 717

三菱JET伺服限位、原点信号通过PLC刷新设置方法

RWw及RWr软元件的初始设定值,可通过 [Pr. PA01.0 控制模式选择] 及 [Pr. PN22.0 默认映射模式选择] 的值进行切换。JET伺服参数用于CC-Link IE现场网络Basic。循环通信的请求报文与响应报文的收发数据被换读为伺服放大器的对象数据 (RWwn、RWrn)。接下来看映射字2D05具体的内容: 也就是2D05操作字的第九位、第十位、第十一位。响应报文的设定值可进行变更。变更初始设定值时,应变更PDO映射。不同的模式,对应不同的刷新映射内容。GXWORKS3程序。

qq_51166033的博客 8052

NumPy包(下) python笔记扩展

nditer 是 NumPy 中的一个强大的迭代器对象,用于高效地遍历多维数组。nditer 提供了多种选项和控制参数,使得数组的迭代更加灵活和高效。nditer 提供了多种控制参数,用于控制迭代的行为。1.order 参数order 参数用于指定数组的遍历顺序。默认情况下,nditer 按照 C 风格(行优先)遍历数组。# 创建一个二维数组​# 使用 C 风格遍历数组print(x)# 输出:# 1# 2# 3# 4# 5# 6​# 使用 Fortran 风格遍历数组。

正在学习中ing...... 1353

HDU1010

题目链接:HDU1010 一道DFS题目,程序种有两点需要注意: 1.快速读入数据 2.剪枝加速判断 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #include<stdio.h> #include<stdlib.h> #include<iostream> #include<iomanip> #include<cmath> #include<algorithm> #includ

wwww190的博客 275

机器学习 -- 信用卡评分模型 -- 互联网金融风控

互联网金融主要分为资金类和资产类。资金类主要是理财产品,吸储,主要指标是用户转化、留存和复投,重在客户运营。资产类主要是贷款,包括消费金融和现金贷,小额贷款属于此类,主要目的是用户转化,还款和风险控制,信用卡评分模型就属于风险控制。 信用评分作用是对贷款申请人(信用卡申请人)做风险评估分值的方法。 信用卡评分是以大量数据的统计结果为基础,根据客户提供的资料和历史数据对客户的信用进行评估,评分卡模型...

XiaoMaEr66的博客 2419

hdu-1010

题意:在一个迷宫中有一只小狗和一根骨头,然后在T分钟的时候恰好迷宫的出口会打开,然后问小狗是否能在第T分钟的时候到达出口离开迷宫。 小狗可以向上下左右四个方向移动,然后小狗不能走回头路,即已经走过了的路就不能再走,并且小狗只能一直走,不能停下来。 思路:这道题就是dfs+剪枝的应用。 1.dfs的话:注意结束条件为——小狗当前所用的时间刚好为T分钟的时候,同时进行判断,如果所在的地方恰好是出口,那么就好说了...不然的话就继续进行搜索。 2.剪枝的话:就是求小狗当前所在的位置与迷宫出口D之间的距离dis

差不多先灬森 2175

2026 AI编程环境安装指南:从下载、部署到流式验证

AI编程环境已不再是传统软件安装,而是融合硬件兼容性、模型运行时与IDE插件协同的系统工程。其核心原理在于:本地GPU驱动需匹配量化运行时(如Ollama v0.3+对CUDA 12.1+的强制要求),协议层依赖gRPC流式响应,生态层则要求插件签名与模型源可信校验。这一技术组合显著提升AI代码生成的实时性与生产就绪度,支撑微服务开发、CI/CD智能补全、本地LLM推理等关键场景。本文聚焦AI编程软件下载与安装过程中的可复现部署实践,覆盖macOS/WSL2双平台、NVMe模型加速、离线校验及原子化功能验证

weixin_30480075的博客 582

睿思综述智能体:100篇高质量文献一键生成万字长文,还能联网PubMed,科研效率拉满!

对一个主题进行文献综述,是日常科研人绕不过去的工作,无论是写论文前言,综述论文,或者基金申请书的立项依据,需要根据主题,从海量文献中提取相关信息,梳理出清晰的逻辑线,再组织成流畅的文字。4 一键生成万字全文:大纲确认后,它会基于对所有论文的深度理解,逐个章节进行详细撰写,最终生成一篇逻辑连贯、内容翔实、引用规范的万字综述长文,并直接保存为Word(.docx)文件。3 智能撰写大纲:你可以提供自己的大纲,也可以让它根据所有文献内容,智能生成一个逻辑清晰的综述大纲,并支持你在此基础上修改。

dinaxuejie的博客 821

(1010)HDU

题意:在N*M的图下。问你从S到D是够可以到达在第T秒的时候 解决方法:DFS 注意:两次剪枝  #include #include #include #include #include #include #include #include #include #include #define ll __int64 #define lll unsigned lon

Amon 369

开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)

阿里云推出国内首个集成“快思考”与“慢思考”能力的 Qwen3-8B 大语言模型,以80亿参数和 128K 上下文支持,重塑AI应用边界并助力开发者高效部署

以微薄之力,予他人些许温暖. 2万+

HDU 1010 Tempter of the Bone &&ZOJ 2110【DFS】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意:一只狗受到了骨头的诱惑,进了n*m的迷宫,迷宫的大门在第T秒开启。小狗要恰好在T秒到达。并且.只能走一次。解题思路:BFS求最短时间,这里并不适合。因此dfs.dfs有3个状态dfs(i, j, t),表示到达(i, j)花费t秒。这里要有剪枝:剪枝1.目标状态(x1, y1),现在...

weixin_34004750的博客 102

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

hdu 1010

hdu1010 回溯法的两种写法

vbs100的专栏 468

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

hdu1010

下次看别人的代码前一定要先上 OJ。。。。 方法: DFS + 剪枝 参考的代码(有错。。): #include <cstdio> #include<iostream> using namespace std; char ch; int a[10][10], f, n, m, t, si, sj, di, dj, c, i, j; void solv...

weixin_34209406的博客 76

hdu 1010 Tempter of the Bone dfs

传送门http://acm.hdu.edu.cn/showproblem.php?pid=1010 收获最大的一个dfs了,写了一天,最后看到了一个让人无语的错误,反省ing'~~ dfs的多重递归确实比较伤,很难debug,我是直接在dfs的开始输出了x,y这种方法不错,推荐一下!!! 首先是最重要的剪枝问题,我在这道题用到了两种。首先是最基础的,从实用性来讲最高的,奇偶剪枝—— 原

萌即正义的萌新教学 361

hdu1010(dfs和奇偶剪枝)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意: 就是看指定的迷宫内存不存在一条路是指定步数的路径从起点到终点。 题目思路: 就是利用dfs进行搜索 然后利用奇偶剪枝来进行减少搜索时间 简单说下奇偶剪枝: 给我们一个地图,如: S.X. …X. …XD … 我们可以看成: 0101 1010 0101 1010 起点所在的为0,终...

zhoupingqi2017的博客 183

HDU 1010 Tempter of the Bone

一道搜索题,需要加奇偶剪枝,需要注意的地方是题目要求在T时刻时刚好到达D位置。 顺带吐槽一下,调试的时候遇到各种奇葩错误,例如去掉提示信息后,答案居然不一样,尼玛,这么会有这种错误啊啊啊啊。 G++提交WA,C++提交AC又是什么鬼啊 #include #include #include #include using namespace std; int N,M,T; int sx,

BacktoWin 420

HDU 1010

// HDU 1010.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <string.h> using namespace std;int n,m,k,num; int sx,sy; char map[8][8]; int flag[8][8]; int dir[4][2]={{-1,0},{0,-1

St_Steven的博客 295

DFS入门--经典迷宫问题(杭电1010)

1. DFS概念 通俗一点就是不撞南墙不回头。是一个递归的过程。 数据结构中的定义:假设初始状态是所有顶点未曾被访问,则深度优先搜索可从 图中某个顶点v0出发,访问此顶点,然后依次从v0的邻接点出发递归的进行同样 的深度搜索,直到图中所有和v0有路径相通的顶点都被访问到。好像还是很抽象, 那上图吧。 假设从E点出发,当有多种选择时,采用字母序的策略选取下一个邻接点。 选择A为下一个邻接点,则从A出发进行递归搜索。依此类推,依次从B,C,D出发进行递 归搜索。在访问了D之后,由

m0_51736862的博客 548

Summer day 4

今天上午深入理解了下DFS,找了模板题自己写会了。上午就写了DFS,下午在神游+看书。HDU1010都写在里面了。 下午神游的时候偶然发现一道类似的拓展的DFS题,于是照猫画虎写了果断WA,不想调试了,DFS递归绕来绕去真智障,贴个HDU的简洁代码做参考HDU 2102#include <cstdio> char a[2][11][11]; int n, m, t, xx[4]={0,0,1,-1

EXECUTER 505

HDU1010(Tempter of the Bone)深搜

HDU1010 Tempter of the Bone 广搜每走 思路:简单的深搜,如果map[nextx][nexty]!='X',则以该最后点为当前节点继续搜,若继续搜没有路可走,则释放当前节点(即原来标记过,恢复为未标记,以便再以其他节点搜索时经过该点),回到上一节点,return.由于step是局部变量,其生命周期随着当前层的DFS()函数结束而结束,所以返回上一层时,step的值就是

colorsunlight的专栏 1282

hdu 4849 最短路 西安邀请赛 Wow! Such City!

http://acm.hdu.edu.cn/showproblem.php?pid=4849 会有很多奇怪的Wa的题,当初在西安就不知道为什么wa,昨晚做了,因为一些Sb错误也wa了很久,这会儿怎么写都会AC。。。。 收获: 1、还是基本都构思好在去敲代码,因为当时没过,昨晚心里有阴影,敲得很慢,而且最开始各种取模以防止漏掉,太保守了...... 2、如果出错,注意参数是不是对的,最开始写

Pilgrim 1419

HDU 1010 - Tempter of the Bone

http://acm.hdu.edu.cn/showproblem.php?pid=1010 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28956Accepted Submissio...

weixin_30240349的博客 74

[hdu1010]Tempter of the Bone 题解

题目大意: 给定一幅地图,“.”是可以走的空格子,“S”是起点,“D”是终点,“X”是不可以走的墙。问有无这样的一条路,使得从S出发到D恰好在第t秒。并且,不能停留在任何位置。 分析: 因为数据范围很小,所以我使用了爆搜,但是虽然没有TLE,但是却WA了。样例过了,调试感觉也没问题,所以为什么??? #pragma GCC optimize(2) #include<cstdio> #i...

Engels_Si_Fish的博客 263
上一篇: [HDU-2616] DFS
下一篇: [POJ-2631] 求树的直径
creativewang
博客等级 码龄17年 20粉丝 203原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值