Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

suslovp

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
//---------------------------------------------------------------------------
 
#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]));
}
//---------------------------------------------------------------------------
 
 


Всего записей: 121 | Зарегистр. 21-02-2007 | Отправлено: 16:53 18-09-2015
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru