1306: [蓝桥杯2016决赛]一步之遥
从昏迷中醒来,小明发现自己被关在X星球的废矿车里。矿车停在平直的废弃的轨道上。
他的面前是两个按钮,分别写着“F”和“B”。
小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。按F,会前进97米。按B会后退127米。
透过昏暗的灯光,小明看到自己前方1米远正好有个监控探头。
他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。
或许,通过多次操作F和B可以办到。
矿车上的动力已经不太足,黄色的警示灯在默默闪烁…每次进行 F 或 B 操作都会消耗一定的能量。
小明飞快地计算,至少要多少次操作,才能把矿车准确地停在前方1米远的地方。
请填写为了达成目标,最少需要操作的次数。
#include<stdio.h>
#include<string.h>
struct node
{
int x;
int step;
}q[10001];
int main()
{
int u1=0;
int next[2]={97,-127};
int book[10000];
memset(book,0,sizeof(book));
int head=0;
int tail=0;
q[tail].x=0;
q[tail].step=0;
tail++;
while(head<tail)
{
for(int i=0;i<2;i++)
{
int dx=q[head].x+next[i];
if(book[dx]==0)
{
book[dx]=1;
q[tail].x=dx;
q[tail].step=q[head].step+1;
tail++;
if(q[tail-1].x==1)
{
break;
}
}
}
if(q[tail-1].x==1)
{
printf("%d\n",q[tail-1].step);
break;
}
head++;
}
return 0;
}