Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
package watersheds;
import java.io.*;
import java.util.*;
public class Main {
String inputFile = "B-large-practice.in";
String outputFile = "B-large-practice.out";
int ngbs[][] = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}};
int[][] map;
char[][] res;
int W, H;
char next;
boolean next(int[] ij) {
boolean got = false;
int best = map[ij[0]][ij[1]];
int i0 = ij[0];
int i1 = ij[1];
for (int i = 0; i < 4; i++) {
int i2 = i0+ngbs[i][0];
int j2 = i1+ngbs[i][1];
if (i2 < 0 || i2 >= H || j2 < 0 || j2 >= W) continue;
if (map[i2][j2] < best) {
best = map[i2][j2];
ij[0] = i2; ij[1] = j2;
got = true;
}
}
return got;
}
void apply(int[] sij) {
int[] ij = {sij[0], sij[1]};
while (res[ij[0]][ij[1]] == 0 && next(ij)) ;
char cur = res[ij[0]][ij[1]];
if (cur == 0) {
cur = next; next++;
}
ij[0] = sij[0]; ij[1] = sij[1];
while (res[ij[0]][ij[1]] == 0) {
res[ij[0]][ij[1]] = cur;
if (!next(ij)) break;
}
}
void solve(Scanner in, PrintWriter out) {
H = in.nextInt();
W = in.nextInt();
map = new int[H][W];
res = new char[H][W];
next = 'a';
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
map[i][j] = in.nextInt();
}
}
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
if (res[i][j] == 0) apply(new int[] {i, j});
out.print(res[i][j]+" ");
}
out.println();
}
}
void run() throws FileNotFoundException {
Scanner in = new Scanner(new File(inputFile));
PrintWriter out = new PrintWriter(new File(outputFile));
int T = in.nextInt();
for (int case_nr = 1; case_nr <= T; case_nr++) {
out.println("Case #"+case_nr+":");
solve(in, out);
}
in.close(); out.close();
}
public static void main(String args[]) throws FileNotFoundException {
new Main().run();
}
}