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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Alex Dzot
3 / 3 / 0
Регистрация: 12.01.2010
Сообщений: 34
12.01.2010, 03:19     Закрасить участок шахматной доски #1
Люди помогите плиз, у меня в С++ вообще башка не варит(((
написать программу для выполнения следующей задачи ():
Нужно решить такую задачу

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

Разрезание шахматной доски C++
Король шахматной доски C++
Обойти конём все поля шахматной доски C++
C++ Программа обхода конем шахматной доски -рекурсией с++
Обход шахматной доски конем C++
C++ Задачка. Поле шахматной доски
Распечатка шахматной доски комбинацией символов C++
C++ Покрытие шахматной доски ходом коня

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
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) ладей нету
Yandex
Объявления
12.01.2010, 19:39     Закрасить участок шахматной доски
Ответ Создать тему
Опции темы

Текущее время: 08:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru