Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
2 / 2 / 2
Регистрация: 09.11.2013
Сообщений: 16

Определить наибольшее количество шашек которое можно съесть за ход

09.11.2013, 20:04. Показов 3600. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, пожалуйста помогите написать программу ,что бы определить наибольшее количество шашек которое можно съесть за ход.
Конкретно дан входной файл в котором первая строка число N- далее как бы доска NXN
вот пример
7
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 0
0 0 2 0 0 0 0 0
0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 0
0 0 0 0 0 0 0 0

2-наша шашка
1-чужие шашки
0-пустые клетки

Я начал ,но все мои идеи заходят в тупик
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim f(999, 999) As String
s = 1
Open "input.txt" For Input As #1
Line Input #1, p
For i = 1 To p
Line Input #1, x
s = 1
For n = 1 To p
If Mid(x, s, 1) = "1" Then raz = raz + 1
f(i, n) = Mid(x, s, 1)
If Mid(x, s, 1) = "2" Then vert = i: gor = n
s = s + 2
Next n
Next i
Close #1
до этого я считываю файл в двумерный массив далее надо определить куда ходить .
Пожалуйста помогите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2013, 20:04
Ответы с готовыми решениями:

Определить максимальное суммарное количество пирожков, которое может съесть Ваня
Ваня Пирожков очень любит пирожки с картошкой и с капустой. Один пирожок с картошкой он съедает за N мс, а с капустой – за M мс. У него...

Определить наибольшее количество пар, которое можно составить из игроков требуемым образом, и вывести эти пары.
Сколько не ломал голову не могу и всё В соревнованиях по бадминтону участвуют n игроков. Каждый игрок имеет свой индивидуальный номер -...

Определить порядковый номер числа в последовательности, которое содержит наибольшее количество цифр
2. Дана последовательность чисел. Определить порядковый номер числа, которое содержит наибольшее количество цифр.

30
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
09.11.2013, 21:49
В принципе интересная задачка!
Надо же учесть, что шашка может зайти в дамки и после этого у неё изменится алгоритм поиска возможных ходов!
А так, по большому счёту, просчитать все варианты и выбрать лучший.
И притом, думаю, с рекурсией будет красивее
0
2 / 2 / 2
Регистрация: 09.11.2013
Сообщений: 16
10.11.2013, 18:54  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
В принципе интересная задачка!
Надо же учесть, что шашка может зайти в дамки и после этого у неё изменится алгоритм поиска возможных ходов!
А так, по большому счёту, просчитать все варианты и выбрать лучший.
И притом, думаю, с рекурсией будет красивее
Я понимаю ,что нужна рекурсия ,но у меня не получаеться организовать сохранение предыдущих вариантов что из них вытекали последующие.
0
Заблокирован
10.11.2013, 19:31
Я обычно использую в рекурсиях
счетчик вызовов, обычно пишу прям в параметрах
и мне всегда понятно какая копия процедуры выполняется

Добавлено через 6 минут
Visual Basic
1
2
3
4
Sub myPrim(optional ChVz&)
 
 if ChVz<10 then myPrim ChVz+1
end sub
Добавлено через 7 минут
таким способом можно построить
многоуровневые многоходовые операции
там помоему допустимое значение для создание очередной копии около 6450
тоесть на столько ходов можно организовать работу
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.11.2013, 19:36
Цитата Сообщение от lengrab Посмотреть сообщение
Я понимаю ,что нужна рекурсия ,но у меня не получаеться организовать сохранение предыдущих вариантов что из них вытекали последующие.
Создавай локальный массив, и в него копируй который передаешь в качестве параметра.
0
Заблокирован
10.11.2013, 19:48
Цитата Сообщение от The trick Посмотреть сообщение
Создавай локальный массив
Да объяви массив данных на уровне модуля для хранения промежуточных данных
64*64(клетки)=4096 в принципе хватает для рекурсии...

Добавлено через 7 минут
The trick привет !!!
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.11.2013, 19:48
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
Да объяви массив данных на уровне модуля для хранения промежуточных данных
64*64(клетки)=4096 в принципе хватает для рекурсии...
Задача простая, сохранять предыдущее состояние и просчитывать в нем 4 хода, и т.д.

Добавлено через 27 секунд
JoraVoenyjHaker, Привет!
1
Заблокирован
10.11.2013, 20:01
8*8 это 64 клетки
а количество вероятных состояний тоже 64
иначе любой школьник обыграет такой комп
у каторого только 4 хода в уме )))

Добавлено через 3 минуты
вернее для шашек надо 4*4
они же только по чёрным клеткам ходят )))

Добавлено через 2 минуты
последний раз я в шашки играл в пионер лагере с вожаткой
и то в чипая...
0
2 / 2 / 2
Регистрация: 09.11.2013
Сообщений: 16
10.11.2013, 20:06  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Задача простая, сохранять предыдущее состояние и просчитывать в нем 4 хода, и т.д.
Это хорошо ,но можешь код набрасать?)
Просто я уже пробовал так сделать,но у меня не вышло.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.11.2013, 20:06
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
иначе любой школьник обыграет такой комп
у каторого только 4 хода в уме )))
За один просчет - один ход, шашка может сделать 4 хода, 2 - вперед и если сзади нее враги и есть куда идти то еще + 2 (также нужно учитывать свободу на краях и если это дамка, то еще и шаги) - это уже отдельная ветвь и ее надо продумывать пока можно убить шашку.
0
Заблокирован
10.11.2013, 20:09
А если мухлевать )))
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.11.2013, 20:10
Цитата Сообщение от lengrab Посмотреть сообщение
Это хорошо ,но можешь код набрасать?)
Просто я уже пробовал так сделать,но у меня не вышло.
Если никто не поможет, позже набросаю, сейчас нет под рукой VB
0
Заблокирован
10.11.2013, 20:16
массив Kletki( 1 to 32, 1 to 4 )

32 шашки
4 возможных состояния так ?
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.11.2013, 20:20
Т.к. за одину итерацию мы не можем уничтожить больше одной шашки, то можно и вовсе не хранить состояние всех клеток, а только измененной. Это будет намного быстрей работать.
0
Заблокирован
10.11.2013, 20:26
Добавлено через 2 минуты
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
32
вернее не 32 а 24
не поленился посмотрел в википедии
12 черных
12 белых

Добавлено через 2 минуты
массив Kletki( 1 to 24, 1 to 2 )
2 состояния в массиве на уровне процедуры ?
0
2 / 2 / 2
Регистрация: 09.11.2013
Сообщений: 16
10.11.2013, 20:30  [ТС]
Забыл сказать что дамка учитывать не надо=)
0
Заблокирован
10.11.2013, 20:31
вот именно что дамка резко увеличивает число состояний
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.11.2013, 20:35
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
вот именно что дамка резко увеличивает число состояний
Шашка по-прежнему может только в 4-х направлениях ходить, только на разные дистанции.
0
Заблокирован
10.11.2013, 20:55
У меня схема примерно нарисовалась, пришлось
вспомнить правила игры
там вообще небольшой код получится если правильно организовать рекурсию
и массив

Добавлено через 9 минут
Kletki( 1 to 24, 1 to 4 )
или Kletki( 23,3 )

Добавлено через 2 минуты
массив на уровне процедуры
+счетчик ходов если ему надо получить число

Добавлено через 6 минут
Всё медаль мне пора довать )))
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
11.11.2013, 09:45
В качестве параметра в процедуру, я думаю, можно передавать адрес поля, с которого необходимо начинать проверку, и агрумент пешка-дамка для изменения параметров проверки нахождения на линии боя шашек противника и пустых клеток за ними.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2013, 09:45
Помогаю со студенческими работами здесь

Определить множество, которое содержит наибольшее количество элементов, которые есть в других множествах
Дано N множеств. Определить множество, которое содержит наибольшее количество элементов, которые есть в других множествах.

Определить количество различных чисел, которое можно составить из цифр данного числа
Вводится трёхзначное число. Определить количество различных чисел, которое можно составить из цифр данного числа (цифру нельзя...

Определить минимальное количество корректных отрезков, на которое можно разбить заданную последовательность.
Известно, что если сохранить в каждом слове текста первую и последнюю букву, а остальные переставить произвольным образом, получившийся...

Наибольшее кол-во обуви, которое можно одеть одновременно
В обувном магазине продается обувь разного размера. Известно, что одну пару обуви можно надеть на другую, если она хотя бы на три размера...

Наибольшее число, которое можно записать в переменную типа int
Доброго времени суток! Есть функция, вычисляющая значения ряда Фибоначчи: typedef vector&lt; int &gt; fibonachiSequence; ... ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru