#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
typedef int value;
int idx(int i, int j, int n)
{
return i * n + j;
}
int islocmin(value *matrix, int i, int j, int m, int n)
{
value x;
x = matrix[idx(i, j, n)];
if (i > 0 && x >= matrix[idx(i-1, j, n)])
return 0;
if (j > 0 && x >= matrix[idx(i, j-1, n)])
return 0;
if (i < m - 1 && x >= matrix[idx(i+1, j, n)])
return 0;
if (i < n - 1 && x >= matrix[idx(i, j+1, n)])
return 0;
return 1;
}
int main(void)
{
int i, j, locmins;
value matrix[N][N];
time_t t;
printf("\n The Random Matrix: ");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
matrix
[i
][j
] = rand() % 50; }
}
locmins = 0;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
if (islocmin((value *)matrix, i, j, N, N)) {
locmins++;
printf("[%d][%d] = %d\n", i
, j
, matrix
[i
][j
]); }
printf("total local minimums: %d\n", locmins
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCiNkZWZpbmUgTiAxMAogCnR5cGVkZWYgaW50IHZhbHVlOwogCmludCBpZHgoaW50IGksIGludCBqLCBpbnQgbikKewogICAgcmV0dXJuIGkgKiBuICsgajsKfQogCmludCBpc2xvY21pbih2YWx1ZSAqbWF0cml4LCBpbnQgaSwgaW50IGosIGludCBtLCBpbnQgbikKewogICAgdmFsdWUgeDsKICAgIAogICAgeCA9IG1hdHJpeFtpZHgoaSwgaiwgbildOwogICAgaWYgKGkgPiAwICYmIHggPj0gbWF0cml4W2lkeChpLTEsIGosIG4pXSkKICAgICAgICByZXR1cm4gMDsKICAgIGlmIChqID4gMCAmJiB4ID49IG1hdHJpeFtpZHgoaSwgai0xLCBuKV0pCiAgICAgICAgcmV0dXJuIDA7CiAgICBpZiAoaSA8IG0gLSAxICYmIHggPj0gbWF0cml4W2lkeChpKzEsIGosIG4pXSkKICAgICAgICByZXR1cm4gMDsKICAgIGlmIChpIDwgbiAtIDEgJiYgeCA+PSBtYXRyaXhbaWR4KGksIGorMSwgbildKQogICAgICAgIHJldHVybiAwOwogICAgcmV0dXJuIDE7Cn0KCiAKaW50IG1haW4odm9pZCkKewogICAgaW50IGksIGosIGxvY21pbnM7CiAgICB2YWx1ZSBtYXRyaXhbTl1bTl07CiAgICB0aW1lX3QgdDsKIAogICAgcHJpbnRmKCJcbiBUaGUgUmFuZG9tIE1hdHJpeDogIik7CiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJcblxuIik7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IE47IGorKykgewogICAgICAgICAgICBtYXRyaXhbaV1bal0gPSByYW5kKCkgJSA1MDsKICAgICAgICAgICAgcHJpbnRmKCIlNWkiLCBtYXRyaXhbaV1bal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CiAKICAgIGxvY21pbnMgPSAwOwogICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKICAgICAgICBmb3IgKGogPSAwOyBqIDwgTjsgaisrKQogICAgICAgICAgICBpZiAoaXNsb2NtaW4oKHZhbHVlICopbWF0cml4LCBpLCBqLCBOLCBOKSkgewogICAgICAgICAgICAgICAgbG9jbWlucysrOwogICAgICAgICAgICAgICAgcHJpbnRmKCJbJWRdWyVkXSA9ICVkXG4iLCBpLCBqLCBtYXRyaXhbaV1bal0pOwogICAgICAgICAgICB9CiAgICBwcmludGYoInRvdGFsIGxvY2FsIG1pbmltdW1zOiAlZFxuIiwgbG9jbWlucyk7CiAKICAgIHJldHVybiAwOwp9