XTU online judge 1253 Robot
程序员文章站
2022-06-01 22:37:17
...
Description
有N 个任务需要Robot去完成,这个N个任务的地点在一个数轴上,坐标为1 到n 。每个任务需要先完成a i 个任务才能开始去做。Robot可以在直线上左右移动,初始位置位于任务1 的地点,方向朝向数轴正方向。请问Robot最少转换多少次方向可以完成所有的任务。
Input
存在多个样例。
每个样例的第一行是一个整数n(1≤n≤1000) ,
第二行是一个n 个整数a 1 ,a 2 ,⋯,a n (0≤a i <n) 。
输入数据保证一定能完成任务。
Output
每行输出一个样例的结果
SampleInput
3
0 2 0
7
0 3 1 0 5 2 6
Sample Output
1
2
解题代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[1010],b,result;
bool flag[1010];
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
memset(flag,0,sizeof(flag));
b = 0;
result = 0;
while(b != n)
{
for(int i=0;i<n;i++)
{
if(b >= a[i] && !flag[i])
{
b++;
flag[i] = true;
}
}
if(b == n) break;
else result++;
for(int i=n-1;i>=0;i--)
{
if(b >= a[i] && !flag[i])
{
b++;
flag[i] = true;
}
}
if(b == n) break;
else result++;
}
printf("%d\n",result);
}
return 0;
}