2017年6月13日 星期二

[C_AR154-易] 感染被包圍的人

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=24871

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String arr[][][] = new String[7][7][2];
for (int i = 0; i < 7; i++) {
String str[] = scn.nextLine().split(" ");
for (int j = 0; j < 7; j++) {
arr[i][j][0] = str[j];
arr[i][j][1] = "0";
if (i == 0 || i == 6) {
if (arr[i][j][0].equals("0"))
arr[i][j][1] = "1";
}
}
if (arr[i][0][0].equals("0"))
arr[i][0][1] = "1";
if (arr[i][6][0].equals("0"))
arr[i][6][1] = "1";
}
for (int i = 1; i < 6; i++) {
for (int j = 1; j < 6; j++) {
if ((j != 0 || j != 6) && arr[i][j][0].equals("0")) {
if (arr[i][j - 1][1].equals("1") || arr[i + 1][j][1].equals("1") || arr[i][j + 1][1].equals("1")
|| arr[i - 1][j][1].equals("1")) {
arr[i][j][1] = "1";
}
}
}
}
for (int i = 5; i > 0; i--) {
for (int j = 5; j > 0; j--) {
if ((j != 0 || j != 6) && arr[i][j][0].equals("0")) {
if (arr[i][j - 1][1].equals("1") || arr[i + 1][j][1].equals("1") || arr[i][j + 1][1].equals("1")
|| arr[i - 1][j][1].equals("1")) {
arr[i][j][1] = "1";
}
}
}
}
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if (j != 0)
System.out.print(" ");
if (arr[i][j][0].equals("X"))
System.out.print("X");
else if (arr[i][j][1].equals("1"))
System.out.print("0");
else
System.out.print("I");
}
System.out.println();
}
}
/*題目:[C_AR154-易] 感染被包圍的人
作者:1010
時間:西元 2017 年6 月 */
}
這題思考一下只要沾到邊是0的就表示不會感染

範例1
輸入:
X X X X X X X
X X X X X X X
X X X X X X X
X X X X X X X
X X X X X X X
X X 0 0 X X X
X X 0 X X X X
輸出:
X X X X X X X
X X X X X X X
X X X X X X X
X X X X X X X
X X X X X X X
X X 0 0 X X X
X X 0 X X X X

範例2
輸入:
X X X X X X X
X X X X X X X
X X X X X X X
X X 0
X X X X X X X
X X X X X X X
X X X X X X X
輸出:
X X X X X X X
X X X X X X X
X X X X X X X
X X 0
X X X X X X X
X X X X X X X
X X X X X X X

範例3
輸入:
X X X X 0 X X
0 0 0 X 0 X X
X X 0 0 X 0 X
X X X X X X X
X X X X X X X
X 0 0 0 0 0 X
X X X 0 X X X
輸出:
X X X X 0 X X
0 0 0 X 0 X X
X X 0 0 X I X
X X X X X X X
X X X X X X X
X 0 0 0 0 0 X
X X X 0 X X X


[C_AR201-易] 城市地圖

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=36527

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
int n=scn.nextInt();
while(n--!=0){
int k=scn.nextInt(),max=0,arr[][]=new int[k][3];
for(int i=0;i<k;i++){
arr[i][0]=scn.nextInt();arr[i][1]=scn.nextInt();arr[i][2]=scn.nextInt();
if(arr[i][1]>max)
max=arr[i][1];
}
int ary[]=new int[max+1];
for(int i=0;i<k;i++){
for(int j=arr[i][0];j<=arr[i][1];j++){
if(ary[j]<arr[i][2])
ary[j]=arr[i][2];
}
}
for(int i=0;i<=max;i++){
if(i!=0)
System.out.print(" ");
System.out.print(ary[i]);
}
System.out.println();
}
}
/*題目:[C_AR201-易] 城市地圖
作者:1010
時間:西元 2017 年6 月 */
}

這題就往陣列去想把左邊起點和右邊起點想像成一個一為陣列的範圍
在這之中先把陣列大小找出來max
最後依序把範圍內的值若大於原本的舊覆蓋過去
arr[ 12 ]
0~8=>5
6~8=>10
10~12=>10
5 5 5 5 5 5 10 10 10 0 10 10 10