POJ 2329 (暴力+搜索bfs)
Time Limit: 5000MS | Memory Limit: 65536K | |
Total Submissions: 3943 | Accepted: 1210 |
Description
A distance between two elements Aij and Apq is defined as |i − p| + |j − q|.
Your program must replace each zero element in the matrix with the nearest non-zero one. If there are two or more nearest non-zeroes, the zero must be left in place.
Constraints
1 ≤ N ≤ 200, 0 ≤ Ai ≤ 1000000
Input
Output
Sample Input
3
0 0 0
1 0 2
0 3 0
Sample Output
1 0 2
1 0 2
0 3 0
#include<iostream>
#include<cstdio> using namespace std; int n;
int matri[210][210];
int dx[]={1,1,-1,-1},cx[]={-1,0,1,0};
int dy[]={-1,1,1,-1},cy[]={0,-1,0,1}; bool in_matrix(int x,int y)
{
if(x<0||x>=n) return false;
if(y<0||y>=n) return false;
return true;
} int bfs(int x,int y,int k)
{
if(k>n) return 0; //n*n matrix搜索K次,自己能够特值来理解
if(matri[x][y]||n==1) return matri[x][y]; //数不为0,或仅仅有一个数(即 1*1 矩阵),就输出
int xx,yy,X,Y;
int i,j;
int cnt=0,die=0;
for(i=0;i<4;i++) //对于菱形4条边的搜索,这里是以每边K个数字来写。
{
xx=x+k*cx[i];
yy=y+k*cy[i];
for(j=k;j--;) //相当于for(j=0;j<k;j++),一边k个数,所以搜索k次
{
if(in_matrix(xx,yy)&&matri[xx][yy])
{
if(cnt==1)
{
die=1;
break;
} X=xx;
Y=yy;
cnt++; }
xx+=dx[i];
yy+=dy[i];
}
if(die)
break;
}
if(cnt==0)
return bfs(x,y,k+1);
else if(die)
return 0;
else
return matri[X][Y]; } int main()
{
scanf("%d",&n);
for(int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
scanf("%d",&matri[i][j]); for(int i = 0; i < n; ++i,printf("\n"))
for(int j = 0; j < n; ++j)
printf("%d ",bfs(i,j,1)); return 0;
}
(借鉴大大的思路)
值得学习的是,对于矩阵的逆时针菱形搜索。思考了非常长时间都没有想清楚。
自己能够试一下顺时针,一样的道理哦。
int dx[]={1,1,-1,-1},cx[]={-1,0,1,0};
int dy[]={-1,1,1,-1},cy[]={0,-1,0,1};
主要是这两对数组。用的非常是巧妙!
版权声明:本文博客原创文章。博客,未经同意,不得转载。
POJ 2329 (暴力+搜索bfs)的更多相关文章
- POJ 1166 暴力搜索 即 枚举
e.... 米还是没有读懂题....T_T ..... e.... 这就是传说中的暴力吗....太血腥了....太暴力了...九重for循环....就这么赤裸裸的AC了.... 水是水了点..但是.. ...
- POJ 1129:Channel Allocation 四色定理+暴力搜索
Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13357 Accepted: 68 ...
- ACM 暴力搜索题 题目整理
UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...
- HDU 1312 Red and Black --- 入门搜索 BFS解法
HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...
- hdu 4740 The Donkey of Gui Zhou(暴力搜索)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...
- 【算法入门】广度/宽度优先搜索(BFS)
广度/宽度优先搜索(BFS) [算法入门] 1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较 ...
- POJ 2182/暴力/BIT/线段树
POJ 2182 暴力 /* 题意: 一个带有权值[1,n]的序列,给出每个数的前面比该数小的数的个数,当然比一个数前面比第一个数小的个数是0,省略不写,求真正的序列.(拗口) 首先想到的是从前到后暴 ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...
- 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)
需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ...
随机推荐
- Oracle SQL Lesson (2) - 限制和排序数据
重建scott用户@?/rdbms/admin/utlsampl.sql@--执行?--$ORACLE_HOME 字符区分大小写:SELECT last_name, job_id, departmen ...
- poj Optimal Milking
Optimal Milking 题目: 有K个机器.C仅仅牛.要求求出最全部牛到各个产奶机的最短距离.给出一个C+K的矩阵,表示各种标号间的距离. 而每一个地方最多有M仅仅牛. 算法分析: 二分+最短 ...
- Windows下一个JSP环境配置
一.首先安装JDK 门户: http://write.blog.csdn.net/postedit/39999433 二.安装Myeclipse 事实上也能够安装eclipse然后再安装Myeclip ...
- 【互动问答分享】第15期决胜云计算大数据时代Spark亚太研究院公益大讲堂
"决胜云计算大数据时代" Spark亚太研究院100期公益大讲堂 [第15期互动问答分享] Q1:AppClient和worker.master之间的关系是什么? AppClien ...
- HTML5 在canvas绘制一个矩形
笔者:本笃庆军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统 ...
- 【原创】leetCodeOj --- Min Stack 解题报告
题目地址: https://oj.leetcode.com/problems/min-stack/ 题目内容: Design a stack that supports push, pop, top, ...
- python K-means工具包初解
近期数据挖掘实验,写个K-means算法,写完也不是非常难,写的过程中想到python肯定有包,尽管师兄说不让用,只是自己也写完了,而用包的话,还不是非常熟,略微查找了下资料,学了下.另外,自己本身写 ...
- web项目启动,运行方法
1.显示器(Listener) web文件加入 <listener> <listener-class>cn.ro.common.InitListener</li ...
- 【LeetCode】- Valid Palindrome(右回文)
[ 问题: ] Given a string, determine if it is a palindrome, considering only alphanumeric characters an ...
- php+sqlite 最佳web服务器
1 wampserver 支持mysql.每次都启动mysql,可以手动停止.但是运行时有时会很慢. 放弃 2 APS绿色版(Apache+PHP+SQLite) 组件环境:Apache2.2. ...