【伪一周小结(没错我一周就做了这么点微小的工作)】HDOJ-1241 Oil Deposits 初次AC粗糙版对比代码框架重构版
2016 11月最后一周
这一周复习了一下目前大概了解的唯一算法——深度优先搜索算法(DFS)。
关于各种细节的处理还是极为不熟练,根据题意判断是否还原标记也无法轻松得出结论。
不得不说,距离一个准ACMer我都有相当差距,这条路是否能行通也无从得知。
明天就是新生赛了,GG的时候即将到来。。。但无论成功失败,我也不是抱着争些什么,
证明自己之类的想法而在志愿的每一项都填上计算机还不调剂结果滑进二本的对吧(并且并不是很后悔),
还是那句话,他强任他强,走好自己的路就好。
菜鸟一思考,大佬就发笑,但若作为菜鸟还不思考,那估计永远是一个菜鸟。
嗯,这周初终于拿出了垫laptop的《啊哈!算法》开始看起来。
书是本好书,非常适合我这种小学生水平的选手,反正我现在终于理解quicksort到底是个怎样的原理了。。。
看完桶、冒泡、快速三种排序,我就直接跳到了深度优先搜索算法这一章,感觉看书还是比瞎JB学好一点,
它的模板也比我之前写的明晰、好看多了。
(关于新的模板http://www.cnblogs.com/ray-coding-in-rays/p/6127150.html)
过了几段示例题代码之后,我决定找HDOJ那道我唯一写出的简单DFS题
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1241
题意大致就是将矩形区域中有多少个@组成的区域,*为隔开的符号
,用新的模板重新写一遍,然后我就发现自己快啥都忘记了。。。
反正一番挣扎之后终于搞出来了。
第一次做,我的AC代码是这样子的:
#include<stdio.h>
#define MAXN 100
char map[MAXN][MAXN];
void dfs(int,int);
int main(void)
{
int length,width;
int i,j;
int count;
while(~scanf("%d %d",&length,&width))
{
count=;
) break;
;i<length;i++)
;j<=width;j++)
{
scanf("%c",&map[i][j]);
}
;i<length;i++)
;j<width;j++)
{
if(map[i][j]=='@')
{
dfs(i,j);
count++;
}
}
printf("%d\n",count);
}
;
}
void dfs(int x,int y)
{
if(map[x][y]=='@')
{
map[x][y]='*';
dfs(x+,y);
dfs(x,y+);
dfs(x-,y);
dfs(x,y-);
dfs(x+,y+);
dfs(x+,y-);
dfs(x-,y-);
dfs(x-,y+);
}
else
return;
}
感觉太粗糙了。。。 ,那么框架重构之后:
#include <stdio.h>
][];
int width, lenth;
//这里定义一个数组,用来表示检索点的移动
][] = {
{ , },{ , },{ -, },{ ,- },
{ , },{ ,- },{ -,- },{ -, }
};
void DFS(int x, int y)
{
int k, tx, ty;
; k < ; k++) // 8种移动方式
{
tx = x + move[k][];
ty = y + move[k][];
// 检查是否合法
|| ty< || tx >= lenth || ty >= width) continue;
if (map[tx][ty] == '*') continue;
if (map[tx][ty] == '@')
{
// 将其标记为非目标状态
map[tx][ty] = '*';
DFS(tx, ty);
// 注意,此处无需还原标记实现回溯
}
}
return;
}
int main(void)
{
int i, j, count;
while (~scanf("%d %d", &lenth, &width))
{
count = ;
) break;
; i<lenth; i++)
// 这里是一个小改进,逐行读入字符串就不用担心末尾回车的问题了
scanf("%s", map[i]);
; i<lenth; i++)
; j < width; j++)
{
if (map[i][j] == '@')
{
DFS(i, j);
count++;
}
}
printf("%d\n", count);
}
;
}
嗯,感觉好多了,that’s all.
【伪一周小结(没错我一周就做了这么点微小的工作)】HDOJ-1241 Oil Deposits 初次AC粗糙版对比代码框架重构版的更多相关文章
- Java结对编程四则运算一周小结
Java结对编程四则运算一周小结 需求分析 对于四则运算来说最主要的就是要计算出产生的式子(字符串的形式). 设计思路 总体可将这个项目分解为几个部分:产生式子,计算式子,判断对错并记录: 具体的思路 ...
- Alpha版本第二周小结
软工作业---Alpha版本第二周小结 姓名 学号 周前计划 每周实际工作记录 自我打分 yrz 1417 协助原型设计的完善,督促组员完成个人任务 原型优化设计未完成,但体 ...
- 软工作业-----Alpha版本第一周小结
软工作业-----Alpha版本第一周小结 Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...
- 2017-2018-2 1723《程序设计与数据结构》第八周作业 & 实验二 & 第一周结对编程 总结
作业地址 第八周作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1847 (作业界面已评分,可随时查看,如果对自己的评分有意 ...
- (干货)java中如何根据一个时间获取属于本年那一周,本周的开始时间以及最后一天时间。并且设置起始时间为周6.结束时间为周5
本人亲测,有用,适用性比较强,直接上代码说话. package com.helloBike.data; import java.text.ParseException; import java.tex ...
- java第二周小结
这是接触Java的第一周,了解这个语言的一些基础知识,下面是对这段时间重要知识点的汇总 一.Java是一种面向对象的语言 特点为:简洁高效.可移植性.适合分布式计算.健壮防患于未然的特性.多线程 ...
- ACM暑假集训第三周小结
这一周学的图论,学了这么些 两种存图的方法:邻接矩阵( map[n][n] ) , 邻接表( headlis[n] , vector<int> G[n] )存图的方法,各有各的好,我的理解 ...
- 团队第三次作业:Alpha版本第二周小结
姓名 学号 周前计划安排 每周实际工作记录 自我打分 XXX 061109 1.对原型设计与编码任务进行进一步的规划与任务分配 2.协调与统一已完成的部分原型设计页面风格并针对部分页面提出了改进建议 ...
- 团队第三次作业:Alpha版本第一周小结
姓名 学号 周前计划安排 每周实际工作记录 自我打分 XXX 061109 1.原型设计与编码任务分配 2.构思程序个性化测试模块的初步实现 1.原型设计与编码任务分配 2.设计了部分类及其成员函数( ...
随机推荐
- slf4j 之logback日志之sl4j架构【二】
一.整体介绍 介绍: The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for v ...
- 数据库出现1045 access denied for user 'root'@'localhost' using password yes (转)
在mysql命令行中执行 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); GRANT ALL PRIVILEGES ON *.* ...
- 版本控制器:SVN
版本控制器:SVN 开发中的实际问题 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流--需求之一:备份! 这个项目中需要一个很复杂的功 ...
- L3-001. 凑零钱
L3-001. 凑零钱 题目链接:https://www.patest.cn/contests/gplt/L3-001 动态规划 这道题一看就知道应该用背包思想来做,不过想了好久没什么思路(dp实在是 ...
- IIS7或IIS7.5 ISAPI和CGI限制找不到的问题记录
弄了一下午,才找到,选择最上面的节点,如下图,记录备用
- linux下文件搜索
常用: grep -nr "关键字" 搜索当前目录下所有匹配关键字的文件 grep -nr "关键字" *php 搜索当前目录下所有匹配关键字的php文件 f ...
- Constraint where both columns cannot be null, but one can
ALTER TABLE TableA ADD CONSTRAINT CK_BothDepartsNotNull CHECK (departA IS NOT NULL OR departB IS NOT ...
- linshi_temp_erweima_html_backup
<!doctype html><html><head><meta charset="utf-8"><meta content= ...
- javascript获取css中的样式值
<body> <input type="button" id="btn" value="启动"/> <img ...
- DX shader根据顶点设置颜色
matrix ViewProjMatrix; vector Blue = {0.0f, 0.0f, 1.0f, 0.0f}; struct VS_INPUT { vector position : P ...