Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Alex Dzot
3 / 3 / 0
Регистрация: 12.01.2010
Сообщений: 34
#1

Закрасить участок шахматной доски - C++

12.01.2010, 03:19. Просмотров 1219. Ответов 1
Метки нет (Все метки)

Люди помогите плиз, у меня в С++ вообще башка не варит(((
написать программу для выполнения следующей задачи ():
Нужно решить такую задачу

Дана шахматная доска размером N*N (1< N≤ 500), в некоторых клетках которой стоят ладьи. Будем считать, что две ладьи бьют друг друга, если они стоят на одной горизонтали или вертикали и между ними нет других ладей. Требуется написать программу, которая выполняет раскраску расположенных на шахматной доске ладей таким образом, чтобы одноцветные ладьи не били друг друга. Количество ладей выбирается случайно, координаты ладей также выбираются случайно. Также принимаются блок-схемы для реализации данной программы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2010, 03:19     Закрасить участок шахматной доски
Посмотрите здесь:

Разрезание шахматной доски - C++
Написать программу нахождения всех способов разрезания шахматной доски с числом клеток nxn (n-четное) на две одинаковые по форме части (не...

Король шахматной доски - C++
Король шахматной доски размером 8х8 находится на коне в одной из клеток своего королевства. Он очень озабочен тем, что некоторые клетки его...

Написать шаблон шахматной доски - C++
Всем доброго времени суток! Я только начала учить циклы. Пока тяжело писать коды. Помогите, пожалуйста, написать программу, которая выводит...

Задачка. Поле шахматной доски - C++
Поле шахматной доски задается парой натуральных чисел: Первое указывает номер вертикали при счете слева направо, второе - номер горизонтали...

Вывод на экран шахматной доски - C++
Помогите пожалуйста написать код программы выводящей на экран шахматную доску. P.S. Я только учусь.

Обход конём шахматной доски - C++
Приветствую всех форумчан! Нужно решить задачу: обойти конём шахматное поле размером n*n (n&lt;=8), побывав на каждой клетке не более одного...

Покрытие шахматной доски ходом коня - C++
4. Покрытие шахматной доски ходом коня.

Распечатка шахматной доски комбинацией символов - C++
Доброго времени суток! Необходимо распечатать шахматную доску используя влож.циклы. Для начала хотелось распечатать хотя бы первые 4...

Обойти конём все поля шахматной доски - C++
Обойти конём все поля шахматной доски размером (n х n) клеток, побывав на каждом из полей ровно один раз. Прошу с подробнейшим объяснением,...

Программа обхода конем шахматной доски -рекурсией с++ - C++
Пока писала ,наделала кучу ошибок. Компилятор сильно ругается. Понятия не имею,что ему не нравится. Везде пишет,что не объявлены...

Пройти конем по всем клеткам шахматной доски - C++
Всем доброго времени суток! Есть задача по которой нужно реализовать прохождения шахмотной фигуры конь по всем возможным позициям на...

Являются ли поля шахматной доски полями одного цвета - C++
Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номер вертикали, а второе — номер горизонтали. Даны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
12.01.2010, 19:39     Закрасить участок шахматной доски #2
Вот такую конфигурацию, похоже, раскрасить не получится.
ЛЛ a1, b1, c1, a2, c2
Предположим, a1 - Белая.
Тогда a2, b1 - черные
Ладью c2 красить нечем
уточни задачу - что делать в тупике?

Добавлено через 19 минут
Простите!
Наверное, цветов может больше двух.
Это меня шахматный бес попутал.
Тогда все просто.
Вот покатаюсь на лыжах, и расскажу.
Уж больно погодка хороша!

Добавлено через 9 часов 55 минут
Попробуй в таком роде
Код
Матрица char M [500] [500]; // char а не int, чтоб место экономить
Начальное заполнение M[i][j] = 0 - пусто, = 1 - стоит ладья
                       0 <= i < N, 0 <= j < K
 (N, K - задаваемые действительные размеры матрицы <= 500)

  int colG, colV;

  for(i=0; i<N; i++) {  // Цикл по строкам
    colG = 0;
    for(j=0; j<K; j++) {  // Движение по строке
      if (M[i][j]==0) continue;
      colV = 0;
      for(ii=i-1; ii>=0; ii--) {
        if (M[ii][j]) {
          colV = M[ii][j];
          break;
        }
      }
      // colV - цвет ближайшей сверху ладьи по вертикали (или 0)
      for(jj=1; jj<=3; jj++)
        if (jj!=colV && jj!=colG) break;
      // теперь jj - цвет в который спокойно можно красить ладью i,j
      ColG = M[i][j] = jj;
    }
  }
// Переменные colG, colV содержат цвет ближайших ладей
// colG - по горизонтали (слева)
// colV - по вертикали (сверху)
// (Предполагается, что мы идем сверху-вниз и слева-направо)
// если colG или colV == 0, то слева по горизонту
// (соотв. вверх по вертикали) от рассматриваемой точки (i,j) ладей нету
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru