Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/172: Рейтинг темы: голосов - 172, средняя оценка - 4.58
 Аватар для HeddinG
0 / 0 / 0
Регистрация: 23.06.2009
Сообщений: 16

Решение Судоку

24.06.2009, 23:39. Показов 32090. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Заранее извеняюсь за повтор, писал такую тему в алгоритмах, но там глухо

Интересует алгоритм для программы, которая решает Судоку. Те, что обсуждались тут - не подходят. Мне ненравиться программа которая вылетает если однозначных вариантов подстановки нет.
Знаю, что нужна рекурсия, попытался написать, но мало что получилось (С++):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
bool Sudoku::Anser ()
{
        if (
                Calculation(0,0) && Calculation(0,1) && Calculation(0,2) && Calculation(0,3) && Calculation(0,4) && Calculation(0,5) && Calculation(0,6) && Calculation(0,7) && Calculation(0,8) &&
                Calculation(1,0) && Calculation(1,1) && Calculation(1,2) && Calculation(1,3) && Calculation(1,4) && Calculation(1,5) && Calculation(1,6) && Calculation(1,7) && Calculation(1,8) &&
                Calculation(2,0) && Calculation(2,1) && Calculation(2,2) && Calculation(2,3) && Calculation(2,4) && Calculation(2,5) && Calculation(2,6) && Calculation(2,7) && Calculation(2,8) &&
                Calculation(3,0) && Calculation(3,1) && Calculation(3,2) && Calculation(3,3) && Calculation(3,4) && Calculation(3,5) && Calculation(3,6) && Calculation(3,7) && Calculation(3,8) &&
                Calculation(4,0) && Calculation(4,1) && Calculation(4,2) && Calculation(4,3) && Calculation(4,4) && Calculation(4,5) && Calculation(4,6) && Calculation(4,7) && Calculation(4,8) &&
                Calculation(5,0) && Calculation(5,1) && Calculation(5,2) && Calculation(5,3) && Calculation(5,4) && Calculation(5,5) && Calculation(5,6) && Calculation(5,7) && Calculation(5,8) &&
                Calculation(6,0) && Calculation(6,1) && Calculation(6,2) && Calculation(6,3) && Calculation(6,4) && Calculation(6,5) && Calculation(6,6) && Calculation(6,7) && Calculation(6,8) &&
                Calculation(7,0) && Calculation(7,1) && Calculation(7,2) && Calculation(7,3) && Calculation(7,4) && Calculation(7,5) && Calculation(7,6) && Calculation(7,7) && Calculation(7,8) &&
                Calculation(8,0) && Calculation(8,1) && Calculation(8,2) && Calculation(8,3) && Calculation(8,4) && Calculation(8,5) && Calculation(8,6) && Calculation(8,7) && Calculation(8,8)
                )
                return true;
//      Add (pole_tmp);
        return false;
}
bool Sudoku::Calculation (int I, int K, int C)
{
        if (pole_tmp[i][K])
                return true;
        if (!Verification(I,K,C))       // Перебераються возможные цифры для поля
        {
                if (C<9)
                        Calculation (I,K,C+1);
                else
                        return false;
        }
        else
        {
                pole[i][K]=C;
                return true;
        }
}
bool Sudoku::Verification(int I, int K, int C)
{
        //----------------------- проверка совпадений по вертикали
        for (int i=I+1;i<9;i++)
        {
                if (pole[i][K]==C)
                        return false;
        }
        for (int ii=I-1;ii>=0;ii--)
        {
                if (pole[ii][K]==C)
                        return false;
        }
        //----------------------- проверка совпадений по горизонтали
        for (int k=K+1;k<9;k++)
        {
                if (pole[i][k]==C)
                        return false;
        }
        for (int kk=K-1;kk>=0;kk--)
        {
                if (pole[i][kk]==C)
                        return false;
        }
        return true;
}
Нашел кое-что у Д.Кнута - Dancing Links (http://www.sudopedia.org/wiki/Dancing_Links).
Но там англ, для меня это сложновато

Если кто сталкивался - напишите плз хотя-бы алгоритм.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2009, 23:39
Ответы с готовыми решениями:

решение судоку
Судоку размера n называется квадрат со стороной n2, разделенный на n2 средних квадратов со стороной n, каждый из которых разделен на n2...

Генерация и решение судоку
Никто не знает ,если ли статья про решение и ,главное, генерацию судоку с различными эвристиками с кодом на c++ или c# англоязычный или...

Нужна проверка, имеет ли судоку решение
Здравтсвуйте! В данный момент пишу программу которая решает судоку: Критика кода приветствуется. main.cpp #include...

30
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.02.2011, 17:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от dipic Посмотреть сообщение
А как можно получить код, если у меня Вижуал Студия 2008-я .. ?
При такой постановке вопроса сразу же ищи вариант под твою студию. У меня нет никакого желания пояснять, как взять исходник и скомпилять его под студией. Тем более потом выяснится, что консольный вариант тебя не устроит и нужен графический. Хотя возможно кто-то и захочет объяснять, но я - пас

Добавлено через 9 минут
В примере из поста #7 надо скомпилять все исходники из каталогов solver и ui_example_classic
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
27.02.2011, 21:43
Evg, писать сmake уже не труЪ?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.02.2011, 22:33
Цитата Сообщение от slice Посмотреть сообщение
Evg, писать сmake уже не труЪ?
А зачем?
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
27.02.2011, 22:45
Evg
удобно, не?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.02.2011, 23:13
Цитата Сообщение от slice Посмотреть сообщение
Evg
удобно, не?
Скриптом удобнее. Один фиг, 2 секунды компилится, а makefile ещё писать надо
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
27.02.2011, 23:22
Evg
зато под вижуал студией без дополнительных телодвижений собралось бы.
0
2 / 2 / 0
Регистрация: 09.12.2010
Сообщений: 45
28.02.2011, 17:58
Evg,
Да, надо на вижуал си %)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2011, 18:06
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от dipic Посмотреть сообщение
Evg,
Да, надо на вижуал си %)
Бери учебник по вижуал Си. Прочитай его. Освой. А потом включи мозги и немного напряги их, чтобы понять, как готовый исходник засунуть в вижуал Си.

Задорнов в своё время обсирал америкосов, что дескать если у них врач - специалист по правой руке, то левую руку он вылечить не сможет. У нас, по ходу дела, страна катится к тому же самому
3
2 / 2 / 0
Регистрация: 09.12.2010
Сообщений: 45
28.02.2011, 23:38
Я только недавно начал вижуал вообще говоря осваевать. Немного разобрался (но просто знаешь, чисто человеческий фактор - не нравится, человек же ш никогда не будет делать то, что его заставляют делать, или же делать, но при этом даже не задумываясь как. Вот у меня аналогично - кодить - ну не мое это, а преподы требуют - вот и приходиться. А душа и тело все в дизайне.. Аналогично и с фри-лансом - есть команда в которой версткой занимаюсь уж явно не я.. Это чисто лирическое отступление). Спасибо за советы! Надеюсь можно будет спрашевать по ходу дела, вдруг что??
С ув. Богдан.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2011, 23:50
Цитата Сообщение от dipic Посмотреть сообщение
Я только недавно начал вижуал вообще говоря осваевать
Могу привести аналогичное понятие: "циркуль для третьего класса". Расшифровка: циркуль - он и в африке циркуль, а для какого он класса, роли не играет. Так же и с консольным приложением.

Если вопрос из разряда "сам я не умею, учиться не хочу, но сделать надо", то зайди в этот раздел. За символическую сумму тебе засунут исходник в вижуал студио. Хотя сразу скажу, что постановка задачи находится на уровне "за деньги открыть текстовый файл, прочитать его и записать в другой файл"
0
2 / 2 / 0
Регистрация: 09.12.2010
Сообщений: 45
01.03.2011, 00:41
Evg,
та нет, какраз таки хочеться научится хотябы чему-то. Ведь еще впереди таких 4 года %) Да и кто его знает, может со временем открою в себе талант кодера. Я понял. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2011, 00:41
Помогаю со студенческими работами здесь

Судоку
Добрый день! Очень нужна помощь! Нужен код СУДОКУ на С++, задали на курсовую, ничего не получается. В гугле искала, не нашла

Судоку
Помогите написать игру судоку. я программирую в С++. Мне дали задание написать игру судоку в консольке. Только без всяких наворотов,...

Судоку!
Почти написал программу для генерирования судоку. Компилируется, работает, однако в 50% случаях генерирует только 3-8 строк и зависает. В...

Судоку си++
Подскажите пожалуйста как правильно создать таблицу 9*9 для ввода значений?

Судоку
# include &lt;algorithm&gt; # include &lt;iostream&gt; # include &lt;string.h&gt; # include &lt;stdio.h&gt; # include &lt;iomanip&gt; # include &lt;vector&gt; ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru