HDU1548:A strange lift
A strange lift
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 64 Accepted Submission(s) : 29
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Here comes the problem: when you are on floor A,and you want to go to floor B,how many times at least he has to press the button "UP" or "DOWN"?
Input
The first line contains three integers N ,A,B( 1 <= N,A,B <= 200) which describe above,The second line consist N integers k1,k2,....kn.
A single 0 indicate the end of the input.
Output
Sample Input
5 1 5
3 3 1 2 5
0
Sample Output
3
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<climits>
using namespace std;
int a,b,ans,i,n;
int f[];
int step[];
void dfs(int floor,int k)
{
if (floor==b)
{
if (ans==-) ans=k;
else ans=min(ans,k);
return;
}
if (floor>n || floor<) return;
if (k>=step[floor]) return;
step[floor]=k;
dfs(floor+f[floor],k+);
dfs(floor-f[floor],k+);
return;
}
int main()
{
while(scanf("%d",&n),n)
{
scanf("%d%d",&a,&b);
for(i=;i<=n;i++)
{
scanf("%d",&f[i]);
step[i]=INT_MAX;
}
ans=-;
dfs(a,);
printf("%d\n",ans);
}
return ;
} /*bfs: 第二种方法
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std; int a,b,ans,i,n;
int f[205];
int vis[205];
struct node
{
int floor,step;
};
int check(int a)
{
if(a<1 || a>n || vis[a]) return 0;
return 1;
}
int main()
{
while(scanf("%d",&n),n)
{
scanf("%d%d",&a,&b);
for(i=1;i<=n;i++)
scanf("%d",&f[i]);
if (a==b) {printf("0\n"); continue;}
memset(vis,0,sizeof(vis));
queue<node>s;
node p;
p.floor=a;
p.step=0;
s.push(p);
vis[a]=1;
ans=-1;
while(!s.empty())
{
p=s.front();
s.pop();
int x=p.floor+f[p.floor];
if (check(x))
{
vis[x]=1;
node q;
q.floor=x;
q.step=p.step+1;
s.push(q);
if(x==b) {ans=q.step;break; }
}
x=p.floor-f[p.floor];
if (check(x))
{
vis[x]=1;
node q;
q.floor=x;
q.step=p.step+1;
s.push(q);
if(x==b) {ans=q.step;break; }
}
}
printf("%d\n",ans);
}
return 0;
}*/
/*
之前用递归和bfs做的,这次用的是dijkstra
*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
const int inf=0x7fffffff;
int n,m,st,ed;
int vis[],dis[],mp[][];
int dijkstra()
{
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++) dis[i]=mp[st][i]==?inf:;
vis[st]=;
for(int i=;i<n;i++)
{
int mindis=inf,k;
for(int j=;j<=n;j++)
if (!vis[j] && mindis>dis[j]) mindis=dis[j],k=j;
vis[k]=;
if (k==ed) return dis[k];
for(int j=;j<=n;j++)
if (!vis[j] && mp[k][j])
dis[j]=min(dis[j],dis[k]+);
}
return -;
}
int main()
{
while(scanf("%d",&n) && n!=)
{
scanf("%d%d",&st,&ed);
memset(mp,,sizeof(mp));
for(int i=;i<=n;i++)
{
int x;
scanf("%d",&x);
if(i+x<=n) mp[i][i+x]=;
if(i-x>) mp[i][i-x]=;
}
if (st==ed) {printf("0\n");continue;}
printf("%d\n",dijkstra());
}
return ;
}
HDU1548:A strange lift的更多相关文章
- HDU1548——A strange lift(最短路径:dijkstra算法)
A strange lift DescriptionThere is a strange lift.The lift can stop can at every floor as you want, ...
- HDU-1548 A strange lift(单源最短路 或 BFS)
Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...
- Hdu1548 A strange lift 2017-01-17 10:34 35人阅读 评论(0) 收藏
A strange lift Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tota ...
- hdu1548 A strange lift(bfs 或Dijkstra最短路径)
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #d ...
- HDU 1548 A strange lift (最短路/Dijkstra)
题目链接: 传送门 A strange lift Time Limit: 1000MS Memory Limit: 32768 K Description There is a strange ...
- HDU 1548 A strange lift (bfs / 最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Time Limit: 2000/1000 MS (Java/Ot ...
- A strange lift
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- bfs A strange lift
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1548 There is a strange lift.The lift can stop can at e ...
- hdu 1548 A strange lift
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Description There is a strange li ...
随机推荐
- Excel教程(9) - 信息函数
CELL 用途:返回某一引用区域的左上角单元格的格式.位置或 内容等信息,该函数主要用于保持与其它电子表格程序的兼容 性. 语法:CELL(info_type,reference) 参数:Info ...
- 第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum&
//Student package zuoye; public class Student { private String name; private int age; private int sc ...
- Python 学习笔记7
今天很残酷,明天很残酷,后天很美好.但绝大多数人会死在明天的路上.只有真正的勇士才能看到后天的太阳! Python学习是枯燥的.但是一定要坚持! 昨天学习了数据结构和模块. 今天学习输入和输出.错误与 ...
- 移动端解决input focus后键盘弹出,高度被挤压的问题
//解决弹出键盘页面高度变化bug var viewHeight = window.innerHeight; //获取可视区域高度 $("input").focus(functio ...
- js iframe跨域访问
1.什么是跨域? 2.前台解决跨域几种方法 2.1 动态创建script 2.2 使用document.domain 2.3使用HTML5新属性postMessage 2.4 利用iframe和loc ...
- CodeForces 753C Interactive Bulls and Cows (Hard)
题意:... 析:随机判断就即可,每次把不正确的删除,经过几次后就基本剩不下了. 代码如下: #pragma comment(linker, "/STACK:1024000000,10240 ...
- hdu_5795_A Simple Nim(打表找规律的博弈)
题目链接:hdu_5795_A Simple Nim 题意: 有N堆石子,你可以取每堆的1-m个,也可以将这堆石子分成3堆,问你先手输还是赢 题解: 打表找规律可得: sg[0]=0 当x=8k+7时 ...
- hdu_5793_A Boring Question(打表找规律)
题目链接:hdu_5793_A Boring Question 题意: 自己看吧,说不清楚了. 题解: 打表找规律 #include<cstdio> typedef long long l ...
- hdu_1348_Wall(凸包)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 题意:让你求n个点的凸包,凸包离点的距离为l 题解:就凸包周长+一个半径为l的圆周长 #incl ...
- tsung: an open-source multi-protocol distributed load testing tool
ROPERTIES::type: KnowledgeBase_Cloud:END: 开源.多协议.分布式的压力测试工具 Item Summary tsung-recorder start 通过p ...