-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmazepath_D2(count, print)
72 lines (55 loc) · 1.49 KB
/
mazepath_D2(count, print)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import java.util.ArrayList;
import java.util.Scanner;
public class maze {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int N = scn.nextInt();
System.out.println(output(0, 0, N - 1, N - 1));
ArrayList ans = getmazepath(0, 0, N - 1, N - 1);
for (int i = 0; i < ans.size(); i++) {
System.out.print(ans.get(i) + " ");
}
}
public static ArrayList<String> getmazepath(int cr, int cc, int er, int ec) {
if (cr == er && cc == ec) {
ArrayList<String> bRes = new ArrayList<>();
bRes.add("");
return bRes;
}
if (cr > er || cc > ec) {
ArrayList<String> bRes = new ArrayList<>();
return bRes;
}
ArrayList<String> myres = new ArrayList<>();
ArrayList<String> resultv = getmazepath(cr + 1, cc, er, ec);
for (String val : resultv) {
myres.add("V" + val);
}
ArrayList<String> resulth = getmazepath(cr, cc + 1, er, ec);
for (String val : resulth) {
myres.add("H" + val);
}
if (cr == cc || cr + cc == er) {
ArrayList<String> resultd = getmazepath(cr + 1, cc + 1, er, ec);
for (String val : resultd) {
myres.add("D" + val);
}
}
return myres;
}
public static int output(int cr, int cc, int er, int ec) {
int count = 0;
if (cr == er && cc == ec) {
return 1;
}
if (cr > er || cc > ec) {
return 0;
}
count = count + output(cr + 1, cc, er, ec);
count = count + output(cr, cc + 1, er, ec);
if (cr == cc || cr+cc == er) {
count = count + output(cr + 1, cc + 1, er, ec);
}
return count;
}
}