调试心得——以HDU-1010为例
来源:互联网 发布:mac os x 10.11.6 u盘 编辑:程序博客网 时间:2024/05/16 08:54
一道小题,调试了将近一个小时——本打算今天多做两道题,目前来看目标无法实现。
这道题我几个月之前做过,今天重做一遍,结果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 10char 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。所以回溯的时候要仔细审查操作前后的变化,自己是否把所有状态都进行了恢复。
又是印象深刻的一课。
- 调试心得——以HDU-1010为例
- Java远程调试(Remote Debug)方法——以Eclipse为例
- GDB调试--以汇编语言为例
- 字符串处理,以HDU 2100为例
- 调试心得——软硬兼施
- Ubuntu Eclipse使用经验(六)——Linux调试NDK项目(以Cocos2dx项目为例)
- 调试开发板的一般过程:以ARM为例
- linux驱动调试技巧:灌寄存器---------以mma7660为例
- linux驱动调试技巧:灌寄存器---------以mma7660为例
- GDB嵌入式调试(以st7162平台为例)
- 反调试技术(以OD为例附核心原代码
- linux驱动调试技巧:灌寄存器---------以mma7660为例
- 动态调试APK,以宝宝树为例
- 母函数-以HDU-1398 Square Coins为例
- 并查集(以hdu 1232 畅通工程为例)
- 关于数据库乱码的问题,以mysql数据库为例(个人心得,勿喷)
- 以 java 为例,总结下 appium 里的一方法的使用心得
- 以 java 为例,总结下 appium 里的一方法的使用心得
- 移动Excel表格指定数据
- 求最长重复子串的长度
- HDU 3853 LOOPS
- ruby on rails demo建立
- 某公司笔试题:编程实现去除字符串中连续出现一次以上的空格。
- 调试心得——以HDU-1010为例
- Linux 多线程通信
- 导入phpmyadmin导出的大文件
- Hibernate 原理 快速入门 详解 经典总结
- ZOJ 3201 Tree of Tree
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-1
- SQL数字函数大全
- error:Target dll has been cancelled.debugger aborted
- Soft Margin VS Hard Margin