Documente Academic
Documente Profesional
Documente Cultură
void checkPeakLows(int board[][maxCols], int R, int C, int PLR[], int PLC[], int& t);
void checkPeakHighs(int board[][maxCols], int R, int C, int PHR[], int PHC[], int& t);
int main()
{
int board[maxRows][maxCols];
int M = 20, N = 20;
generateArray(board, M, N);
printArray(board, M, N);
int PLR[1000];
int PLC[1000];
int PHR[1000];
int PHC[1000];
system("pause");
return 0;
}
void generateArray(int board[][maxCols], int R, int C)
{
int x = 0;
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
x = rand();
board[i][j] = x;
}
}
}
void checkPeakLows(int board[][maxCols], int R, int C, int PLR[], int PLC[], int& t)//PLR - Peak Lower
Row, PLC - Peak Lower Column, parrallel arrays
{
//Check the inside of the array first
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
bool isLowPeak = false;
for (int p = i - 1; p < i + 2; p++)
{
if (p<0 || p >= R)
continue;
for (int k = j - 1; k < j + 2; k++)
{
if (k<0 || k >= C)
continue;
if (i == p)
if (j == k)
continue;
if (board[i][j] < board[p][k])
{
isLowPeak = true;
}
else
{
isLowPeak = false;
break;
}
}
if (!isLowPeak)
break;
}
if (isLowPeak)
{
PLR[t] = j;
PLC[t] = i;
t++;
}
}
}
}
void checkPeakHighs(int board[][maxCols], int R, int C, int PHR[], int PHC[], int& t)
{
t = 0;
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
bool isHighPeak = false;
for (int p = i - 1; p < i + 2; p++)
{
if (p<0 || p >= R)
continue;
for (int k = j - 1; k < j + 2; k++)
{
if (k<0 || k >= C)
continue;
if (i == p)
if (j == k)
continue;
if (board[i][j] > board[p][k])
{
isHighPeak = true;
}
else
{
isHighPeak = false;
break;
}
}
if (!isHighPeak)
break;
}
if (isHighPeak)
{
PHR[t] = j;
PHC[t] = i;
t++;
}
}
}
}