1735 - 购物停车

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

小明每周都要开车陪女朋友去商业街购物,商业街是一条笔直的大街,我们把它抽象成是X轴上的一条线段,街上的每个商铺都位于线段上整数点的位置,而顾客可以在线段上的任何一个位置停车,并且每停一次车都需要交一次费用。于是小明想知道如果自己就停一次车,然后步行去之前计划好要去的那些商铺,最后回到停车的位置,那么最短的步行路程是多少。

题目输入

输入的第一行为一个整数t(1<=t<=100),表示测试样例的组数。
接下来输入t组样例,每组输入占两行,第一行输入一个整数n(1<=n<=20),表示小明他们计划要去的商铺的个数,第二行输入n个整数,表示计划要去的那些商铺的位置,位置范围为[0,99]。

题目输出

对于每组输入,输出题目要求的最短的步行路程。

输入/输出样例

输入格式

2
4
24 13 89 37
6
7 30 41 14 39 42

输出格式

152
70

C语言解答

#include<stdio.h>
#define INF 0x7fffffff
int main()
{
	int t,max,min,n,a;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		max=0,min=INF;
		while(n--)
		{
			scanf("%d",&a);
			if(a>max)max=a;
			if(a<min)min=a;
		}
		printf("%d\n",2*(max-min));
	}
	return 0;
}

C++解答

#include <stdio.h>

int main() {
	int t, n, p, maxi, mini;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		maxi = -100000000;
		mini = 100000000;
		while (n--) {
			scanf("%d", &p);
			if (p > maxi)
				maxi = p;
			if (p < mini)
				mini = p;
		}
		printf("%d\n", (maxi - mini) * 2);
	}
	return 0;
}

Java解答

import java.util.*;

public class Main{
 final static Scanner jin=new Scanner(System.in);
  public static void main(String args[]){
   int t=jin.nextInt();
    while(t-->0){
     int n=jin.nextInt();
      int m=jin.nextInt();
      int M=m;
      for(int i=1;i<n;i++){
       int x=jin.nextInt();
        if(x<m)m=x;
        if(x>M)M=x;
      }
      System.out.println(2*(M-m));
    }
  }
}