Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод программного кода с C++ на Java 
V
    Опции темы
Reenaz
Дата 12.10.2015, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.10.2015

Репутация: нет
Всего: нет



Есть код программы, выполняющий алгоритм Обхода коня всех клеток шахматной доски.Нужно перевести этот код на Java.Пожалуйста помогите это сделать, сам в с++ совершенно не разбирась((
вот ссылка на сам код: http://iguania.ru/article/knights-tour
PM MAIL   Вверх
a0730
Дата 12.10.2015, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Нет ничего проще!
Заменить ввод/вывод.
Код

package ru.vingrad.chess;

import java.util.Scanner;

public class PuzzleSolver {

    private static final int HORIZONTAL_SIZE = 8;
    private static final int VERTICAL_SIZE = 8;

    private static int horizontal[] = { 2, 1, -1, -2, -2, -1, 1, 2 };
    private static int vertical[] = { -1, -2, -2, -1, 1, 2, 2, 1 };

    private static int accessibility[][] = { { 2, 3, 4, 4, 4, 4, 3, 2 }, { 3, 4, 6, 6, 6, 6, 4, 3 }, { 4, 6, 8, 8, 8, 8, 6, 4 }, { 4, 6, 8, 8, 8, 8, 6, 4 }, { 4, 6, 8, 8, 8, 8, 6, 4 }, { 4, 6, 8, 8, 8, 8, 6, 4 }, { 3, 4, 6, 6, 6, 6, 4, 3 },
            { 2, 3, 4, 4, 4, 4, 3, 2 } };

    private static int currentRow, currentColumn, moveNumber, counter = 0;
    private static int board[][] = new int[HORIZONTAL_SIZE][VERTICAL_SIZE];

    /**
     *
     */
    public PuzzleSolver() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter a horizontal coordinate(0 - 7): ");
        while (!sc.hasNextInt())
            sc.next();
        currentRow = sc.nextInt();
        System.out.print("Enter a vertical coordinate(0 - 7): ");
        while (!sc.hasNextInt())
            sc.next();
        currentColumn = sc.nextInt();
        sc.close();
        int mainRow = currentRow, mainColumn = currentColumn;
        int Row = 0, Column = 0;

        for (int i = 1; i <= 64; i++) {
            board[mainRow][mainColumn] = ++counter;

            int minAccessibility = 8;
            int minA = 8, minB = 8;

            for (moveNumber = 0; moveNumber <= 7; moveNumber++) {
                currentRow = mainRow;
                currentColumn = mainColumn;

                currentRow += horizontal[moveNumber];
                currentColumn += vertical[moveNumber];

                if (currentRow >= 0 && currentRow <= 7 && currentColumn >= 0 && currentColumn <= 7) {
                    accessibility[currentRow][currentColumn]--;

                    if (minAccessibility > accessibility[currentRow][currentColumn] && board[currentRow][currentColumn] == 0) {
                        minAccessibility = accessibility[currentRow][currentColumn];

                        if (board[currentRow][currentColumn] == 0) {
                            Row = currentRow;
                            Column = currentColumn;
                        }
                        int RowA = currentRow, ColumnA = currentColumn;

                        for (int moveA = 0; moveA <= 7; moveA++) {
                            RowA += horizontal[moveA];
                            ColumnA += vertical[moveA];

                            if (RowA >= 0 && RowA <= 7 && ColumnA >= 0 && ColumnA <= 7) {
                                if (minA >= accessibility[RowA][ColumnA] && board[RowA][ColumnA] == 0)
                                    minA = accessibility[RowA][ColumnA];
                            }
                        }
                    }

                    if (minAccessibility == accessibility[currentRow][currentColumn] && board[currentRow][currentColumn] == 0) {
                        minAccessibility = accessibility[currentRow][currentColumn];

                        int RowB = currentRow, ColumnB = currentColumn;

                        for (int moveB = 0; moveB <= 7; moveB++) {
                            RowB += horizontal[moveB];
                            ColumnB += vertical[moveB];

                            if (RowB >= 0 && RowB <= 7 && ColumnB >= 0 && ColumnB <= 7) {
                                if (minB >= accessibility[RowB][ColumnB] && board[RowB][ColumnB] == 0)
                                    minB = accessibility[RowB][ColumnB];
                            }
                        }

                        if (board[currentRow][currentColumn] == 0 && minB < minA) {
                            Row = currentRow;
                            Column = currentColumn;
                        }
                    }
                }
            }

            mainRow = Row;
            mainColumn = Column;
        }

        printBoard();

    }

    private static void printBoard() {
        System.out.format("\n");
        for (int j = 0; j < VERTICAL_SIZE; j++) {
            for (int i = 0; i < HORIZONTAL_SIZE; i++) {
                System.out.format("%4d", board[i][j]);
            }
            System.out.format("\n\n");
        }
    }

}



Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.