64 lines
1.4 KiB
Text
64 lines
1.4 KiB
Text
int findLargestBlock(int[][][] mat, int i, int j, int k, int maxsize)
|
|
{
|
|
if (i < 0 | j < 0 | k < 0) {
|
|
return 0;
|
|
}
|
|
|
|
var d = new int[7];
|
|
|
|
d[0] = findLargestBlock(mat, i, j, k - 1, maxsize);
|
|
d[1] = findLargestBlock(mat, i, j - 1, k, maxsize);
|
|
d[2] = findLargestBlock(mat, i-1, j - 1, k, maxsize);
|
|
d[3] = findLargestBlock(mat, i, j - 1, k-1, maxsize);
|
|
d[4] = findLargestBlock(mat, i-1, j - 1, k, maxsize);
|
|
d[5] = findLargestBlock(mat, i-1, j , k-1, maxsize);
|
|
d[6] = findLargestBlock(mat, i-1, j - 1, k-1, maxsize);
|
|
|
|
var size = 0;
|
|
if (mat[i][j][k] == 1) {
|
|
var min = d[0];
|
|
for (var i = 1; i < 7; i = i + 1;){
|
|
if (min > d[i]) {
|
|
min = d[i];
|
|
}
|
|
}
|
|
size = 1 + min;
|
|
}
|
|
|
|
var max = 0;
|
|
if (maxsize > size){
|
|
max = maxsize;
|
|
} else {
|
|
max = size;
|
|
}
|
|
return max;
|
|
}
|
|
|
|
int[][][] getTensor(){
|
|
return new int[][][]
|
|
{new int[][]{
|
|
new int[]{1, 0, 1},
|
|
new int[]{1, 1, 1},
|
|
new int[]{1, 1, 0}
|
|
},
|
|
new int[][]{
|
|
new int[]{1, 1, 1},
|
|
new int[]{1, 1, 1},
|
|
new int[]{1, 1, 1}
|
|
},
|
|
new int[][]{
|
|
new int[]{0, 1, 1},
|
|
new int[]{0, 1, 1},
|
|
new int[]{1, 1, 1}
|
|
}
|
|
};
|
|
}
|
|
|
|
int program()
|
|
{
|
|
|
|
var mat = getTensor();
|
|
|
|
print_string("The size of the largest cubical block of 1's is ");
|
|
return findLargestBlock(mat, 3-1, 3-1, 3-1, 0);
|
|
}
|