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 ...
随机推荐
- Arch下载官方镜像列表Official mirrors
Official mirrors The official Arch Linux mirror list is available from the pacman-mirrorlist package ...
- blur事件
blur事件是在元素失去焦点的时候触发,那么失去焦点的前提便是获得焦点. 哪些元素可以获取焦点呢? 1.超链接 2.input button textarea (without disabled) 3 ...
- XueTr 0.45 (手工杀毒辅助工具) 绿色版
软件名称: XueTr 0.45 (手工杀毒辅助工具)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 3.3MB图片预览: ...
- mysql教程
mysql教程 2016年5月14日 0:09 1.查看mysql帮助信息 C:\Users\zhangcunli>mysql --help mysql Ver 14.14 Distrib 5 ...
- Java 微信登录授权后获取微信用户信息昵称乱码问题解决
String getUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_toke ...
- 当引用了Properties.Settings后,如果执行的时候,出现"配置系统无法初始化" 或者 某某节点不正确
自定义了一个 PowerConfig命名空间 PowerSettings.Settings 然后一个exe,引用了该dll,在app.cinfig里增加了配置项 <applicationSe ...
- Chapter 1 First Sight——35
The final bell rang at last. I walked slowly to the office to return my paperwork. 最后下课铃响了.我走到了办公室上讲 ...
- Chapter 1 First Sight——25
"They are… very nice-looking." I struggled with the conspicuous understatement. 他们都很好看,我与轻 ...
- SSH-KeyGen 的用法
假设 A 为客户机器,B为目标机: 要达到的目的:A机器ssh登录B机器无需输入密码:加密方式选 rsa|dsa均可以,默认dsa 做法:1.登录A机器 2.ssh-keygen -t [rsa|ds ...
- Educational Codeforces Round 15_C. Cellular Network
C. Cellular Network time limit per test 3 seconds memory limit per test 256 megabytes input standard ...