|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.05.2012, 10:11 | #1 |
Регистрация: 06.07.2011
Сообщений: 3
|
Растановка ферзей. JAVA
Помогите пожалуйста. Выводит только один вариант расстановки, а нужно все... Что ни так написано?!=(
package queens; public class Main { static void queens(int n) { int[] result = queens(new int[n], 0); if (result != null) { printPosition(result); } else { System.out.println("Расстановка невозможна"); } } static int[] queens(int[] board, int fixed) { int n = board.length; if (fixed == n) { // Все ферзи уже расставлены! return board; } for (int i = 0; i < n; ++i) { if (valid(board, fixed, i)) { board[fixed] = i; int[] result = queens(board, fixed + 1); if (result != null) return result; } } return null; } static boolean valid(int[] board, int fixed, int pos) { for (int i = 0; i < fixed; ++i) { if (pos == board[i] || fixed - i == Math.abs(pos - board[i])) { return false; } } return true; } static void printPosition(int[] pos) { int n = pos.length; for (int row : pos) { for (int i = 0; i < row; ++i) System.out.print(" ."); System.out.print(" *"); for (int i = row+1; i < n; ++i) System.out.print(" ."); System.out.println(); } } public static void main(String[] args) { queens(8); } } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
N ферзей | sidestep | Общие вопросы C/C++ | 10 | 22.02.2012 14:50 |
задача ферзей | Математик_Лена | Общие вопросы C/C++ | 1 | 05.02.2012 18:04 |
8 ферзей | Роза!!! | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 23.02.2011 10:54 |
8 ферзей | battlefrogg | Помощь студентам | 5 | 06.05.2010 15:28 |
8 ферзей | slim5 | Общие вопросы Delphi | 0 | 15.06.2008 11:46 |