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

Для заданного n необходимо определить, может ли выиграть игрок, делающий первый ход, при наилучших последующих ходах противника - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Записать день в переменную d,месяц в переменную m, год в переменную y http://www.cyberforum.ru/cpp-beginners/thread565807.html
Как можно получить системную дату? Мне надо записать день в переменную d,месяц в переменную m, год в переменную y Заранее Спасибо!
C++ Вывести целые числа С++ #define END_TIME 1000 #define Exp 0.07 #include <stdio.h> #include <stdlib.h> #include <math.h> # include <conio.h> #include <ctime> float exprand() { float r; http://www.cyberforum.ru/cpp-beginners/thread565801.html
C++ Помогите с алгоритмами(3), С++
Здравствуйте, ну очень нужна помощь с этой задачей, помогите......... нужно написать код на С++(обязательно!) Условие: «Янка» Условие Янка положил на стол N (1 < N ≤ 500) выпуклых K-гранников (1 < K ≤ 100) и N различных типов наклеек. Ночью кто-то наклеил наклейки на грани, по одной на грань (на одном и том же многограннике могло оказаться несколько наклеек одного типа). Янке...
C++ Помогите с алгоритмами(2), С++
Здравствуйте, Я студент 1-ого курса, не могу написать программу для этой задачи, прошу у вас помощи разобраться мне с это задачей и написать к ней код на VS2010 С++ (обязательно!).... "Шланги" Условие Два шланга разных цветов перепутаны между собой. Заданы координаты точек, в которых они перепутаны, кроме того, для каждой точки указано, какой из шлангов находится сверху (точки...
C++ Помогите с алгоритмами, С++ http://www.cyberforum.ru/cpp-beginners/thread565790.html
Здравствуйте программисты, Я студент 1-ого курса, не могу написать программу для этой задачи, прошу у вас помощи разобраться мне с это задачей и написать к ней код на С++ (обязательно!).... Условие Задается натуральное число n (n < 1000). Двое играющих называют по очереди числа, меньшие 1000, по следующим правилам. Начиная с числа n, каждое новое число должно увеличивать одну из цифр...
C++ Нужно ли подключать FLTK в вижуал студио 1Подскажите. Нужно ли подключать обязательно FLTK в вижуал студио?и почему?и зачем?Можно ли обойтись и без єтого? спасибо. подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.05.2012, 06:49     Для заданного n необходимо определить, может ли выиграть игрок, делающий первый ход, при наилучших последующих ходах противника
Непонятно по условию, что выводить при n равном 999. Ведь новое число никто не сможет назвать.
А для остальных случаев можно применить такой алгоритм:
Заводим массив размером 999. В нем будем помечать проигрышные и выигрышные позиции. Также нужна будет очередь в которой будут храниться очередные обрабатываемые позиции.
Начинаем с конца - с 999.
Проигрышные позиции: 998, 989, 899 (получаются отниманием 1 от каждого разряда).
Затем с каждой из проигрышных позиций вычисляем выигрышные позиции. Например для 998 выигрышные позиции будут:
997, 996, 995, 988, 978, 968, 898, 798, 698 (получаются отниманием 1,2,3 от каждого разряда).
Затем из этих выигрышных позиций делаем проигрышные (опять отниманием 1 от каждого разряда):
например для 997: 996 - не будет проигрышной позицией, т.к. оно уже выигрышное. 897 и 987 - тоже не будут проигрышными позициями, т.к. по другим линиям, они тоже будет уже выигрышными.
и т.д.
 
Текущее время: 03:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru