fork download
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4.  
  5. int t;
  6. int ret;
  7. int map[4][4];
  8. int check[10000000];
  9.  
  10. const int dy[] = {0,0,-1,+1};
  11. const int dx[] = {-1,+1,0,0};
  12.  
  13. void go(int sy, int sx, int cnt, int num){
  14. if(cnt == 7){
  15. check[num] ++;
  16. return;
  17. }
  18.  
  19. for(int dir = 0; dir < 4; dir++){
  20. int ny = sy + dy[dir];
  21. int nx = sx + dx[dir];
  22.  
  23. if(ny < 0 || ny >= 4 || nx < 0 || nx >= 4) continue;
  24.  
  25. go(ny, nx, cnt + 1, num * 10 + map[ny][nx]);
  26. }
  27. }
  28.  
  29. int main(){
  30. cin >> t;
  31. for(int x = 0; x < t; x++){
  32.  
  33. for(int i = 0; i < 4; i++){
  34. for(int j = 0; j < 4; j++){
  35. cin >> map[i][j];
  36. }
  37. }
  38.  
  39. ret = 0;
  40. memset(check, 0, sizeof(check));
  41. for(int i = 0; i < 4; i++){
  42. for(int j = 0; j < 4; j++){
  43. go(i,j,0,0);
  44. }
  45. }
  46.  
  47. for(int i = 0; i < 10000000; i++) if(check[i]) ret++;
  48.  
  49. cout << "#" << x+1 << ' ' << ret << endl;
  50. }
  51. }
Success #stdin #stdout 0s 4248KB
stdin
Standard input is empty
stdout
Standard output is empty