题目描述
在大学体育课中,有一个考试科目叫做定向越野。学生需要在每一个节点打卡,一边打卡一边向目的地前进,最后到达目的地。现在小明要参加定向越野的考试,考试的场地是一个环形场地,小明可以选择顺时针绕着这个场地去打卡,并且前往目击地,也可以选择逆时针绕这个场地去打卡,并且前往目击地。 题中首先会输入有n
个整数的数组num
,数组的索引就是对应的第0
个节点到第n
个节点(节点从0
计算)。每个元素代表两个节点之间的距离,如第1
个元素代表的就是第0
号节点和第1
号节点之间的距离。接下来两行会各输入一个整数,作为起始节点和目标节点。 现在请你编写代码,帮小明计算从出发点到目的地之间的最短距离。
从测试集获取输入内容,并打印输入的内容。
输入输出格式
输入格式 四行输入 第一行一个整数n
,代表有n
个节点; 第二行为一串整数,是环形场地从0
开始到第n
个结点,每两个节点之间的距离; 第三行一个整数为起始的节点; 第四行一个整数为目标节点。
输出格式 一个整数
输入输出样例1
输入 6
4 1 2 8 6 4
0
3
输出 7
输入输出样例2
输入 6
1 2 3 4 5 6
0
3
输出 6
#include<stdio.h>
int main(){
int n,i,x[99],s1,s2,ans=0,k=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);
ans += x[i];
}
scanf("%d",&s1);
scanf("%d",&s2);
if(s2>s1)
{ for(i=s1;i<s2;i++){
ans -= x[i];
k += x[i];
}}else{
for(i=s2;i<s1;i++){
ans -= x[i];
k += x[i];
}
}
if(k>ans){
printf("%d",ans);
}else{
printf("%d",k);
}
}