Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2012, 17:48   #1
kolobot
 
Регистрация: 15.12.2010
Сообщений: 4
По умолчанию Задача: Фигуры

здравствуйте, уважаемые программисты.
прошу помощи в разработке алгоритма и программировании решения такой вот задачи:

Имеется похожий на шахматную доску прямоугольный клетчатый лист бумаги размером V х H (V– количество клеток по горизонтали, H – по вертикали) с черными и белыми клетками. В левом нижнем углу – черная клетка. Из прямоугольника можно вырезать связанную фигуру с В черными и W белыми клетками. Фигура называется связанной, если любая ее клетка имеет хотя бы одну общую сторону с другой клеткой.
Две фигуры считаются различными, если одна из них не может быть получена из другой вращением.
Определить все различные фигуры.

решить нужно используя методы поиска с возвратом. решение нужно запрограммировать, создание листа я написал, а вот остальное не знаю как делать.
честно говоря даже нет идей для решения, прошу вашей помощи.
Код:
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i,j;
int V,H;
int list [1000][1000];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
     H = StrToInt(Edit1->Text);
     V = StrToInt(Edit2->Text);
     for(i=0; i<V; i++)
      {
        for(j=0; j<H; j++)
        {
          if (V % 2 == 0)
          {
            if (i % 2 == 0)
            { list[i][j] = (i+j) % 2;}
            else
            { list[i][j] = ((i+j) % 2); }
           }
           else
           {
            if (i % 2 == 0)
             { list[i][j] = (((i+j) % 2) + 1) % 2;}
             else
             { list[i][j] = (((i+j) % 2) + 1) % 2;}
            }
          }
        }
 
}
//---------------------------------------------------------------------------
kolobot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с масивом. Задача о площади фигуры. FullVenic Помощь студентам 1 16.05.2012 21:16
Поворот фигуры firefox0013 Общие вопросы C/C++ 3 30.11.2011 18:36
Движение одной фигуры,вслед изменения высоты другой фигуры. 7vlad37 Microsoft Office Excel 3 21.07.2011 18:01
Фигуры Арнис Фриланс 4 25.01.2011 13:05
Детали, фигуры dma Microsoft Office Excel 1 17.10.2007 09:22