题意就是有n个飞机场按顺序排列,飞机场有两种类型,要么是0,要么是1,从一个飞机场飞到另一个相同类型的飞机场花费0,飞到不同类型的飞机场花费为两个飞机场间的距离。问从a飞到b的最少花费,中间可以降落。
一开始是不是感觉没有什么思路?但是我们可以这样想,飞机从起点到终点的过程中是可以降落的,如果起点和终点相同的话,一直飞就好了,用不着中转对吧。但是,如果我们起点和终点不一样,想要花费最小的话,中间是一定要中转的,那么问题来了,怎样中转,在哪儿转机。这样的话我们假设起点为1,终点为0,那么从起点到终点的过程中肯定有两个相邻的机场是这样的:10,仔细想想是不是。想明白之后肯定就知道了吧,我们让飞机停在1机场,此时花费为0,然后从1机场起飞在相邻的0机场降落,这样的话因为是相邻机场花费为1,此时,机场就和终点的机场一样了,直飞就好了,花费为1。所以程序就是起点和终点相同的时候输出0,不相同的时候输出1。附代码如下:
#include<stdio.h>
int main()
{
int n,a,b;
char ch[100010];
scanf("%d %d %d",&n,&a,&b);
getchar();
scanf("%s",ch);
if(ch[a - 1] == ch[b - 1])
printf("0");
else
printf("1");
return 0;
}