//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; #if 1 int NN = 5; int Mass[5][5] = { {8, 2, 1, 2, 3}, {1, 2, 6, 2, 4}, {2, 7, 2, 3, 4}, {1, 3, 2, 4, 4}, {1, 3, 4, 3, 1} }; #else #define _N 9 int NN = _N; int Mass[_N][_N] = {}; #endif //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void iteration(int N, int t, char **a, char *IndWork, char *IndMax, int *SumAmax) { int SumCol; int SumA; int i,k,l; if(t==N) { SumCol = 0; for(k=0;k<N;k++) { SumCol += IndWork[k]; } if(SumCol == N) { SumA = 0; for(l=0;l<N;l++) { if(IndWork[l] != 0) { SumA += a[IndWork[l]-1][l]; } } if(SumA > *SumAmax) { *SumAmax = SumA; for(l=0;l<N;l++) { IndMax[l] = IndWork[l]; } } } return; } for(i=0; i<=N; i++) { IndWork[t]=i; iteration(N, t+1, a, IndWork, IndMax, SumAmax); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j; // типа читаем из файла char N = NN; char **a = new char* [N]; for(i=0; i<N; i++) a[i] = new char [N]; // типа читаем из файла for(i=0; i<N;i++) for (j=0; j<N; j++) a[i][j] = Mass[i][j]; char *IndWork = new char [N]; char *IndMax = new char [N]; for(i=0;i<N;i++) IndWork[i] = 0; int SumAmax = 0; iteration(N, 0, a, IndWork, IndMax, &SumAmax); Memo1->Clear(); Memo1->Lines->Add("Вес: " + IntToStr(SumAmax)); for(i=0;i<N;i++) Memo1->Lines->Add(IntToStr(IndMax[i])); } //--------------------------------------------------------------------------- |