fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define N 10
  6.  
  7. typedef int value;
  8.  
  9. int idx(int i, int j, int n)
  10. {
  11. return i * n + j;
  12. }
  13.  
  14. int islocmin(value *matrix, int i, int j, int m, int n)
  15. {
  16. value x;
  17.  
  18. x = matrix[idx(i, j, n)];
  19. if (i > 0 && x >= matrix[idx(i-1, j, n)])
  20. return 0;
  21. if (j > 0 && x >= matrix[idx(i, j-1, n)])
  22. return 0;
  23. if (i < m - 1 && x >= matrix[idx(i+1, j, n)])
  24. return 0;
  25. if (i < n - 1 && x >= matrix[idx(i, j+1, n)])
  26. return 0;
  27. return 1;
  28. }
  29.  
  30.  
  31. int main(void)
  32. {
  33. int i, j, locmins;
  34. value matrix[N][N];
  35. time_t t;
  36.  
  37. printf("\n The Random Matrix: ");
  38. srand(time(NULL));
  39.  
  40. for (i = 0; i < N; i++) {
  41. printf("\n\n");
  42. for (j = 0; j < N; j++) {
  43. matrix[i][j] = rand() % 50;
  44. printf("%5i", matrix[i][j]);
  45. }
  46. printf("\n");
  47. }
  48.  
  49. locmins = 0;
  50. for (i = 0; i < N; i++)
  51. for (j = 0; j < N; j++)
  52. if (islocmin((value *)matrix, i, j, N, N)) {
  53. locmins++;
  54. printf("[%d][%d] = %d\n", i, j, matrix[i][j]);
  55. }
  56. printf("total local minimums: %d\n", locmins);
  57.  
  58. return 0;
  59. }
Success #stdin #stdout 0s 4192KB
stdin
Standard input is empty
stdout
 The Random Matrix: 

   43   18   21   15    7   22   22   16   11    2


   17    0   34    6   26    2   23   22   15    3


   45   19   43   26   44   21   38   43   38   27


   36   33   45    9   48    4   31   20   21   42


   25   40   44   11   48   21   14   21   45   31


   25   43    0   20   19   47   43    9   40   33


   37   28   16   34   39   17   39   20   39   12


   14   16    4    8   28    3   29   42   24   25


   23    1   20   26   23   39   23   16    1   15


    1   40   45   18   24   34   35   15    6   26
[0][4] = 7
[0][9] = 2
[1][1] = 0
[1][3] = 6
[1][5] = 2
[3][3] = 9
[3][5] = 4
[3][7] = 20
[4][6] = 14
[5][2] = 0
[5][4] = 19
[5][7] = 9
[6][9] = 12
[7][0] = 14
[7][2] = 4
[7][5] = 3
[8][1] = 1
[8][4] = 23
[8][8] = 1
[9][0] = 1
[9][3] = 18
[9][7] = 15
total local minimums: 22