勇闯黄金十二宫……狮子宫

**

勇闯黄金十二宫……狮子宫

**
时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

描述

话说星矢、紫龙、冰河、阿瞬为了救活雅典娜,必须勇闯黄金十二宫。

第五个他们来到狮子宫,身为狮子座黄金圣斗士的艾尔里亚由于被假教皇控制了,于是他这次挡住了星矢他们的去路。星矢再次陷入苦战,艾尔里亚的闪电光速拳对他很有威胁,不过星矢有一个可以挡住一次进攻的神奇方布,可以抵挡一次光速拳,后来星矢爆发小宇宙,发出绝招天马流星拳打到了艾尔里亚身上,使他清醒了过来。

不过这块方布也有很多地方通了。星矢修理了一下,使方布上依次留下了若干个长方形的洞,每个被留下的长方形的洞的边均平行于方布的边。现在要计算出所有洞的周长之和。

输入

本题包含多组数据.
每组数据共有二行,第一行为整数 r,0<=r<=100,表示已从正方形布上长方形的洞个数。
第二行包含一个长为4r的整数序列X1,X2,…,X4r,每个数的范围在0到40000之间,对任意的i(i=1,2,…,r),整数X4i-3,X4i-2,X4i-1,X4i用于描述第i个被裁去的长方形的洞情况,X4i-3表示第i个被裁去的长方形的左边与方纸张左边之间的距离,X4i-2表示第i个被裁去的长方形的右边与方布左边之间的距离,X4i-1表示第i个被裁去的长方形的下边与方布下边之间的距离,X4i表示第i个洞的上边与方布下边之间的距离。(不考虑边界问题)

输出

对于每组数据输出一行,
为所有洞的周长之和。

样例输入

2
0 3 0 3 3 6 3 6

样例输出

24

这道题其实并不难,只是我看很多人提交的代码运行速度和占用内存比较大,所以我这里上传一个占用内存小的代码。

其实就是只需要申请一个,大小为4的数组就可以了,不用申请太大的空间。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input =new Scanner(System.in);
		int n=input.nextInt();
		int cont=0;
		for(int i=0;i<n;i++) {
			int arr[]=new int[4];
			for(int j=0;j<4;j++) {
				int a=input.nextInt();
				arr[j]=a;
			}
				int x=arr[1]-arr[0];
				int y=arr[3]-arr[2];
				cont=cont+2*x+2*y;
		}
		System.out.println(cont);	
	}
}

猜你喜欢

转载自blog.csdn.net/qq_41617692/article/details/82981490