[编程题] 度度熊回家
时间限制:1秒
空间限制:32768K
一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?
输入描述:
输入一个正整数N, N <= 50。
接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100
输出描述:
输出一个整数表示度度熊最少需要走的距离。
输入例子:
4 1 4 -1 3
输出例子:
4
解题思路:本题分别求删除第一个点到第n-2个点的distance 然后选出最小的distance
1)采用两层循环,第一层控制删除的点从1-n-2 第二层循环j从1到n-1 求出从0-n-1去掉删除的点的distance
2)其中用k记录当前位置的前一个位置的索引(用k记录原因为可能为j-1 或者j-2 如果j-1删除了则为j-2)
3)使用min_dis记录最小的距离值
注意点:每次二层循环时,记得中间变量distance 以及 k 的重置操作
1 #include2 #include 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 while(cin>>n) 9 {10 int a[n];11 for(int i=0;i >a[i];14 }15 int min_dis = 0;16 int distance = 0;17 int k = 0;//记录上一位置18 //从i=1 到i=n-2 每次删除一个19 for(int i=1;i<=n-2;i++)20 {21 distance = 0;22 k = 0;23 for(int j=1;j