los enlaces de temas: en tres dimensiones la superficie corporal
Significado de las preguntas: en la parrilla de N * N, ponemos unos cubitos de 1 * 1 * 1.
Cada valor v = rejilla [i] [j] denota el v cubo superpuesta sobre la celda correspondiente (i, j).
Por favor, volver a la superficie corporal final.
Solución: me siento este problema es tomar el título para leer. . .
1, si hay un cubo en cada cuadrícula. Si hay un cubo, la informática es un círculo de cuatro cubo caras de número + 2 * (2 tanto superior e inferior)
2, para considerar si delante de un cubo, menos cualquier área de superposición (es decir, dos caras superpuestas están ocultos, de modo que se solapan número * 2)
3, para examinar si existe un cubo de la izquierda, menos cualquier área de superposición (es decir, dos caras superpuestas están ocultos, de modo que se solapan número * 2)
Sacó los dos primeros ejemplos del caso. . ( Pintado a mano del alma , 5555)
código:
1 clase Solution { 2 pública : 3 int área superficial (vector <vector < int >> y rejilla) { 4 int fila = grid.size (); 5 int col = rejilla [ 0 ] .size (); 6 int ans = 0 ; 7 para ( int i = 0 ; i <fila; i ++ ) { 8 para ( int j = 0 ; j <col; j ++ ) { 9 si (rejilla [i] [j]) { 10 Rejilla + = ANS [i] [j] * 4. + 2 ; // apilar hasta 11 // delante del cubo 12 es SI (I> 0 ) { 13 es ANS - = min (Grid [I- . 1 ] [J], Rejilla [i] [j]) * 2 ; 14 } 15 // cubo izquierdo 16 IF (J> 0 ) { . 17 ANS - = min (Grid [I] [J- . 1 ], Cuadrícula [i] [j] ) * 2 ; 18 } 19 } 20 } 21 } 22 de retorno año; 23 } 24 };