c ++ поиск деревень приостановлен - PullRequest
0 голосов
/ 30 октября 2018

Мы хотим, чтобы деревня, которую этот человек прошел, прошла от начала до конца.

1 / пользователь должен ввести количество населенных пунктов и перевести путь к матрице

enter image description here у нас матрица динамического размещения

a b c d e f это деревни если между двумя деревнями есть мост 1, а если нет 0

Примечание: пользователь - тот, кто заполняет матрицу, а буквы не включены

*************. ********************************* ************************************************** *************** То, что я решил сделать, но я думаю, что мы можем использовать рекурсивные тоже

****************** по циклу ********************

Старт цикла строка за строкой Если он получает 0, то i++, в противном случае, если он получает 1, он печатает местоположение и затем переходит на другую строку

Пример 1:

Он начинается с a[0][0] до b[0][1], затем прыгает с указателя на b[1][0] и мы устанавливаем b в 0 в двух случаях. Таким образом, у нас нет повторения одного и того же случая

В предыдущем примере должны быть напечатаны координаты a and b и c and d

В примере 2 он должен напечатать координаты a c b d f вот моя попытка

void permut(int *x, int *y)
{
    int c;
    c = *x;
    *x = *y;
    *y = c;
}

main()
{   
    int x, y;

//creation
    cout << "donner la talle de matrice (ligne puis colone) : \n";
    cin >> x >> y;
    int **grid = new int *[y];
    for (int i = 0; i < y; ++i)
    {   
        grid[i] = new int[x];
    }

    for (int i = 0; i < x; i++)
    {   
        for (int j = 0; j < y; j++)
        {   
            cout << "t[" << i << "][" << j << "] : ";
            cin >> grid[i][j];
        }
    }
    for (int i = 0; i < x; i++)
    {   
        cout << "\n";
        for (int j = 0; j < y; j++)
        {   
            cout << grid[i][j] << "\t";
        }
        cout << "\n";
    }
    cout << "\n\n\n";

    do
    {   
        int i , j;
        if (grid[i][j] == 1)
        {   
            cout << i << "  " << j << "\n";
            permut(&i, &j);
            grid[i][j] = 0;
            grid[j][j] = 0;
            continue;
        }
        else if (grid[i][j] == 0)
        {   
            i++;
            continue;
        }
        else
        break;

    }while (1);

//delete

    for (int i = 0; i < y; ++i)
    {   
        delete[] grid[i];
    }

    delete[] grid;

    system("pause");
    return 0;
}

1 Ответ

0 голосов
/ 03 ноября 2018
  do
{
    if (tab[i][j] == 1)
    {
        cout << "village (" << i << ") then " << endl;
        swap(i, j);
        tab[i][j] = 0;
        tab[j][i] = 0;
    }
    else if (tab[i][j] == 0)
    {
        i++;}
    } while (i != breaki || j != breakj);
cout << "your are arrived !!\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...