Локальный Минимум

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем venti, 8 окт 2012.

  1. venti

    venti Гость

    Элемент двумерного массива называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером (n × n) найти максимум среди всех локальных минимумов.
    Код (C++):
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    int kol(0), z(0), max(0),k(0),l(0),c(0),c1(0);
    int n=StrToInt(Edit1->Text);
    StringGrid1->ColCount=n;
    StringGrid1->RowCount=n;

    for ( int i=0; i<n; i++)                    //ищут минимумы по углам
    for (int j=0; j<n; j++)
    { if (i==0) c=0;
    else c=n-1;
    if (j==0) c1=0;
    else c1=n-1;
    { for (l=j;l<j+1;l++)
    for (k=i;k<i+1;k++)
    {if ((StringGrid1->Cells[j][i]<StringGrid1->Cells[l+c][k+c1]) && (j!=l+c) && (i!=k+c1))
    z++;}

    if ((i==0)&&(j!=0)) c=0;                                         //ищет минимумы по краям сторон, насчет правильности этого цикла не уверен
    else c=n-1;
    if ((j==0)&&(i!=0)) c1=0;
    else c1=n-1;
    { for (l=j;l<j+1;l++)
    for (k=i;k<i+1;k++)
    {if ((StringGrid1->Cells[j][i]<StringGrid1->Cells[l+c][k+c1]) && (j!=l+c) && (i!=k+c1))
    z++;}


    if ((i!=0)&&(j!=0))                                       //ищет в середине
    for (k=i; k<i-1; k--)
    for (l=j; l<j-1; l--)
    { if ((StringGrid1->Cells[j][i]<StringGrid1->Cells[l][k]) && (i!=k) && (j!=l));
    z++;
    }
    }

    if ((z==3) || (z==5) || (z==8))
    {
    kol++;
    if (StringGrid1->Cells[j][i]>max)
    max=StrToInt(StringGrid1->Cells[j][i]);
    }
    }
    Edit2->Text=IntToStr(kol);
    Edit3->Text=IntToStr(max);
    }
    надеюсь на помощь
     
Загрузка...

Поделиться этой страницей