如何用长尾词提问解决openjudge 2971:抓住那头牛问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计933个文字,预计阅读时间需要4分钟。
本文主要讲述了OpenJudge 2971:抓住那头牛的解题过程。如有需要,可向朋友咨询,希望能对你有所帮助。
问题描述:农夫知道一头牛的位置,想抓住它。请编写程序,根据农夫提供的坐标,输出抓到牛的坐标。
时间限制:2000ms内存限制:65536kB
解题思路:
1. 读取农夫提供的坐标(x1, y1)和目标坐标(x2, y2)。
2.判断农夫与牛的位置关系,即判断农夫是否在牛的左边或右边。
3.根据位置关系,确定农夫需要向哪个方向移动才能抓住牛。
4.输出农夫移动后的坐标。
代码实现:
python
读取农夫和牛的坐标x1, y1=map(int, input().split())x2, y2=map(int, input().split())判断位置关系if x1 运行代码,输入农夫和牛的坐标,即可得到农夫抓住牛后的坐标。
总时间限制: 2000ms
内存限制: 65536kB
描述
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟。
2、从X移动到2*X,每次移动花费一分钟。
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
输入
两个整数,N和K
输出
一个整数,农夫抓到牛所要花费的最小分钟数
样例输入
5 17
样例输出
4
这道题就是一道水题。但是。它非常的坑。总结一下BFS就是
1,数组开够。
2,牛和老夫的方向判断。
3,重复入队的判断。
4,超界的判断。
5,人品好。 这是关键。
代码如下:
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int x,y; 5 struct node 6 { 7 int x,times; 8 }; 9 node q[3000010]; 10 int visit[1000010]; 11 int heads=1,last=1; 12 int main() 13 { 14 scanf("%d%d",&x,&y); 15 if(y<x) 16 { 17 printf("%d",x-y); 18 return 0; 19 } 20 node a; 21 a.x=x;a.times=0; 22 q[heads]=a; 23 while(heads<=last) 24 { 25 node n=q[heads]; 26 heads++; 27 if(n.x==y) 28 { 29 printf("%d",n.times); 30 break; 31 } 32 node n1=n; 33 n1.times++; 34 n1.x+=1; 35 if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 36 n1.x-=2; 37 if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 38 n1.x+=1; 39 n1.x*=2; 40 if(n1.x<=100000&&!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 41 } 42 return 0; 43 }
简直尴尬。
相关教程:C++视频教程
以上就是openjudge 2971:抓住那头牛 解题过程(附代码)的详细内容,更多请关注自由互联其它相关文章!
本文共计933个文字,预计阅读时间需要4分钟。
本文主要讲述了OpenJudge 2971:抓住那头牛的解题过程。如有需要,可向朋友咨询,希望能对你有所帮助。
问题描述:农夫知道一头牛的位置,想抓住它。请编写程序,根据农夫提供的坐标,输出抓到牛的坐标。
时间限制:2000ms内存限制:65536kB
解题思路:
1. 读取农夫提供的坐标(x1, y1)和目标坐标(x2, y2)。
2.判断农夫与牛的位置关系,即判断农夫是否在牛的左边或右边。
3.根据位置关系,确定农夫需要向哪个方向移动才能抓住牛。
4.输出农夫移动后的坐标。
代码实现:
python
读取农夫和牛的坐标x1, y1=map(int, input().split())x2, y2=map(int, input().split())判断位置关系if x1 运行代码,输入农夫和牛的坐标,即可得到农夫抓住牛后的坐标。
总时间限制: 2000ms
内存限制: 65536kB
描述
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟。
2、从X移动到2*X,每次移动花费一分钟。
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
输入
两个整数,N和K
输出
一个整数,农夫抓到牛所要花费的最小分钟数
样例输入
5 17
样例输出
4
这道题就是一道水题。但是。它非常的坑。总结一下BFS就是
1,数组开够。
2,牛和老夫的方向判断。
3,重复入队的判断。
4,超界的判断。
5,人品好。 这是关键。
代码如下:
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int x,y; 5 struct node 6 { 7 int x,times; 8 }; 9 node q[3000010]; 10 int visit[1000010]; 11 int heads=1,last=1; 12 int main() 13 { 14 scanf("%d%d",&x,&y); 15 if(y<x) 16 { 17 printf("%d",x-y); 18 return 0; 19 } 20 node a; 21 a.x=x;a.times=0; 22 q[heads]=a; 23 while(heads<=last) 24 { 25 node n=q[heads]; 26 heads++; 27 if(n.x==y) 28 { 29 printf("%d",n.times); 30 break; 31 } 32 node n1=n; 33 n1.times++; 34 n1.x+=1; 35 if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 36 n1.x-=2; 37 if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 38 n1.x+=1; 39 n1.x*=2; 40 if(n1.x<=100000&&!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 41 } 42 return 0; 43 }
简直尴尬。
相关教程:C++视频教程
以上就是openjudge 2971:抓住那头牛 解题过程(附代码)的详细内容,更多请关注自由互联其它相关文章!

