Мы хотим, чтобы деревня, которую этот человек прошел, прошла от начала до конца.
1 / пользователь должен ввести количество населенных пунктов и перевести путь к матрице
у нас матрица динамического размещения
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;
}