回答編集履歴

1

edit

2018/05/06 00:51

投稿

mkgrei
mkgrei

スコア8560

test CHANGED
@@ -3,3 +3,81 @@
3
3
 
4
4
 
5
5
  こちらのアルゴリズムを少しいじればほしい解が得られます。
6
+
7
+
8
+
9
+ ---
10
+
11
+
12
+
13
+ javaではなく、Pythonですが。
14
+
15
+
16
+
17
+ ```python
18
+
19
+ a = [[1,0,0,1,1,0],
20
+
21
+ [1,0,0,0,1,1],
22
+
23
+ [1,1,0,0,1,0],
24
+
25
+ [0,1,0,1,1,1]]
26
+
27
+ from pprint import pprint
28
+
29
+ pprint(a)
30
+
31
+
32
+
33
+ def find(b, c, i, j, d=0):
34
+
35
+ if (i>=0 and i<len(b[0])
36
+
37
+ and j>=0 and j<len(b)
38
+
39
+ and (c[j][i] is False) and b[j][i]==1):
40
+
41
+ d += 1
42
+
43
+ c[j][i] = True
44
+
45
+ d = find(b, c, i-1, j, d=d)
46
+
47
+ d = find(b, c, i+1, j, d=d)
48
+
49
+ d = find(b, c, i, j-1, d=d)
50
+
51
+ d = find(b, c, i, j+1, d=d)
52
+
53
+ return d
54
+
55
+
56
+
57
+ def gen_bool(b):
58
+
59
+ c = [[False for _ in range(len(b[0]))] for _ in range(len(b))]
60
+
61
+ return c
62
+
63
+
64
+
65
+ ans = 0
66
+
67
+ c = gen_bool(a)
68
+
69
+ for j in range(len(a)):
70
+
71
+ for i in range(len(a[0])):
72
+
73
+ if a[j][i]==1 and (c[j][i] is False):
74
+
75
+ d = find(a, c, i, j)
76
+
77
+ if d>ans:
78
+
79
+ ans = d
80
+
81
+ print(ans)
82
+
83
+ ```