試題 算法訓練 相鄰數對
資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。
輸入格式
輸入的第一行包含一個整數n,表示給定整數的個數。
第二行包含所給定的n個整數。
輸出格式
輸出一個整數,表示值正好相差1的數對的個數。
樣例輸入
6
10 2 6 3 7 8
樣例輸出
3
樣例說明
值正好相差1的數對包括(2, 3), (6, 7), (7, 8)。
評測用例規模與約定
1<=n<=1000,給定的整數爲不超過10000的非負整數。
提交代碼
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] a = new int[n];
for(int i = 0; i < n; i ++) a[i] = in.nextInt();
Arrays.sort(a);
int ans = 0;
for(int i = 0; i < n - 1; i ++)
if(a[i + 1] - a[i] == 1) ans ++;
System.out.println(ans);
}
}
試題 算法訓練 畫圖
資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
在一個定義了直角座標系的紙上,畫一個(x1,y1)到(x2,y2)的矩形指將橫座標範圍從x1到x2,縱座標範圍從y1到y2之間的區域塗上顏色。
下圖給出了一個畫了兩個矩形的例子。第一個矩形是(1,1) 到(4, 4),用綠色和紫色表示。第二個矩形是(2, 3)到(6, 5),用藍色和紫色表示。圖中,一共有15個單位的面積被塗上顏色,其中紫色部分被塗了兩次,但在計算面積時只計算一次。在實際的塗色過程中,所有的矩形都塗成統一的顏色,圖中顯示不同顏色僅爲說明方便。
給出所有要畫的矩形,請問總共有多少個單位的面積被塗上顏色。
輸入格式
輸入的第一行包含一個整數n,表示要畫的矩形的個數。
接下來n行,每行4個非負整數,分別表示要畫的矩形的左下角的橫座標與縱座標,以及右上角的橫座標與縱座標。
輸出格式
輸出一個整數,表示有多少個單位的面積被塗上顏色。
樣例輸入
2
1 1 4 4
2 3 6 5
樣例輸出
15
評測用例規模與約定
1<=n<=100,0<=橫座標、縱座標<=100。
提交代碼
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
boolean[][] mp = new boolean[105][105];
int x1, y1, x2, y2;
for(int i = 0; i < n; i ++) {
x1 = in.nextInt();
y1 = in.nextInt();
x2 = in.nextInt();
y2 = in.nextInt();
for(int j = x1; j < x2; j ++)
for(int k = y1; k < y2; k ++)
mp[j][k] = true;
}
int ans = 0;
for(int i = 0; i <= 100; i ++)
for(int j = 0; j <= 100; j ++)
if(mp[i][j]) ans ++;
System.out.println(ans);
}
}