搜索专题: HDU1428漫步校园
漫步校园
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4459 Accepted Submission(s): 1401
3
1 2 3
1 2 3
1 2 3
3
1 1 1
1 1 1
1 1 1
1
6
RunId : 21258881 Language : G++ Author : hnustwanghe
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
const int N = 50 + 5;
const int INF = (1<<30);
long long Min[N][N],dp[N][N];
typedef struct node{
int x,y,val;
node(int x=0,int y=0,int val=0):x(x),y(y),val(val){}
}Node;
const int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int mat[N][N];
int n,newx,newy;
long long DFS(int x,int y){
if(x == n-1 && y == n-1) return 1;
if(dp[x][y]>0) return dp[x][y];
for(int d=0;d<4;d++){
newx = x + dir[d][0];
newy = y + dir[d][1];
if(newx >= 0 && newx < n && newy >= 0 && newy < n && Min[x][y] > Min[newx][newy]){
dp[x][y] += DFS(newx,newy);
}
}
return dp[x][y];
}
void Init(int n){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
Min[i][j] = INF;
memset(dp,0,sizeof(dp));
}
void BFS(){
queue <Node> Q;
Node t,s;
Min[n-1][n-1] = mat[n-1][n-1];
t.x = n-1,t.y = n-1,t.val = mat[n-1][n-1];
Q.push(t);
while(!Q.empty()){
t = Q.front();Q.pop();
for(int d=0;d<4;d++){
newx = t.x + dir[d][0];
newy = t.y + dir[d][1];
if(newx >=0 && newx < n && newy >= 0 && newy < n){
s.val = t.val + mat[newx][newy];
if(s.val < Min[newx][newy]){
s.x = newx , s.y = newy;
Min[newx][newy] = s.val;
Q.push(s);
}
}
}
}
}
int main(){
while(scanf("%d",&n)==1){
Init(n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
scanf("%d",&mat[i][j]);
}
BFS();
printf("%I64d\n",DFS(0,0));
}
}
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
const int N = 50 + 5;
const int INF = (1<<30);
long long Min[N][N],dp[N][N];
typedef struct node{
int x,y,val;
node(int x=0,int y=0,int val=0):x(x),y(y),val(val){}
}Node;
const int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int mat[N][N];
int n,newx,newy; long long DFS(int x,int y){
if(x == n-1 && y == n-1) return 1;
if(dp[x][y]>0) return dp[x][y];
for(int d=0;d<4;d++){
newx = x + dir[d][0];
newy = y + dir[d][1];
if(newx >= 0 && newx < n && newy >= 0 && newy < n && Min[x][y] > Min[newx][newy]){
dp[x][y] += DFS(newx,newy);
}
}
return dp[x][y];
}
void Init(int n){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
Min[i][j] = INF;
memset(dp,0,sizeof(dp));
} void BFS(){
queue <Node> Q;
Node t,s;
Min[n-1][n-1] = mat[n-1][n-1];
t.x = n-1,t.y = n-1,t.val = mat[n-1][n-1];
Q.push(t);
while(!Q.empty()){
t = Q.front();Q.pop();
for(int d=0;d<4;d++){
newx = t.x + dir[d][0];
newy = t.y + dir[d][1];
if(newx >=0 && newx < n && newy >= 0 && newy < n){
s.val = t.val + mat[newx][newy];
if(s.val < Min[newx][newy]){
s.x = newx , s.y = newy;
Min[newx][newy] = s.val;
Q.push(s);
}
}
}
}
} int main(){
while(scanf("%d",&n)==1){
Init(n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
scanf("%d",&mat[i][j]);
}
BFS();
printf("%I64d\n",DFS(0,0));
}
}
搜索专题: HDU1428漫步校园的更多相关文章
- hdu1428漫步校园( 最短路+BFS(优先队列)+记忆化搜索(DFS))
Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU校园呈方形布 ...
- hdu1428漫步校园
#include <queue> #include <iostream> #include <algorithm> #include <cstring> ...
- HDU 1428 漫步校园(记忆化搜索,BFS, DFS)
漫步校园 http://acm.hdu.edu.cn/showproblem.php?pid=1428 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于 ...
- [HDU 1428]--漫步校园(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1428 漫步校园 Time Limit: 2000/1000 MS (Java/Others) M ...
- Hdu428 漫步校园 2017-01-18 17:43 88人阅读 评论(0) 收藏
漫步校园 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- HDU 1428漫步校园
漫步校园 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU校 ...
- HDOJ 1428 漫步校园
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU(搜索专题) 1000 N皇后问题(深度优先搜索DFS)解题报告
前几天一直在忙一些事情,所以一直没来得及开始这个搜索专题的训练,今天做了下这个专题的第一题,皇后问题在我没有开始接受Axie的算法低强度训练前,就早有耳闻了,但一直不知道是什么类型的题目,今天一看,原 ...
- NOIP2018提高组金牌训练营——搜索专题
NOIP2018提高组金牌训练营——搜索专题 1416 两点 福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”.基础级别的时候是在一个n×m单元上玩的.像这样: 每一个单元有包含一个有色点.我们将用不 ...
随机推荐
- js-弹框倒计时三秒后,自动关闭???
效果: js: //弹出窗,三秒倒计时 countdown(){ //点击发布按钮后,三秒倒计时开始 $(".btn-pub").click(function(){ var cou ...
- Python爬虫十六式 - 第三式:Requests的用法
Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽 Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ...
- 通过 PHP 生成 XML
如需使用 PHP 在服务器上生成 XML 响应,请使用下面的代码: <?php header("Content-type:text/xml"); echo "< ...
- Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
if first time to install docker, be noted the docker engine started as root copied from: http://blog ...
- 微信小程序 API 界面(1)
界面 有关屏幕的api 交互: wx.showToast() 显示消息提示框 参数:object object的属性: title:类型 字符串 提示的内容(文本最多7个汉字) icon:类型 字符串 ...
- 用ps 查看线程状态
ps -eLo pid,tid,class,rtprio,ni,pri,psr,pcpu,pmem,stat,wchan:30,comm 线程相关选项: THREAD DISPLAY H Show t ...
- imu tool使用
安装imu tool sudo apt-get install ros-melodic-imu-tools launch文件: <!-- imu_node launch file--> & ...
- 常见iPhone设备尺寸及分辨率(持续更新)
开发中常用的px与pt区别 px就是表示pixel,像素,是屏幕上显示数据的最基本的点: pt就是point,是印刷行业常用单位,等于1/72英寸. px全称为pixel,是一个点,它不是自然界的长度 ...
- UI-WPF_UI:WPF UI - DMSkin官方网站
ylbtech-UI-WPF_UI:WPF UI - DMSkin官方网站 1.返回顶部 1. QQ: 944095635 DMSkin.com 首页 论坛 定制 博客 联系 DMSkin 3. ...
- Spring 之 IOC ,DI 理论
本文是依照极客学院java<Spring之IOC>章节学习的心得.随笔记录 浅谈IOC:(Inversion of Control, 控制反转) Spring 核心容器,贯穿始终.所谓IO ...