Итак, для домашней работы одной из вещей, с которой мне было поручено, является замена двух строк или двух столбцов друг на друга с помощью матрицы, построенной в объекте типа класса , используя эти 3 параметра для определения его:Переключение строк и столбцов в матрице с сложностью O (1)
size_t _R;// Number of rows.
size_t _C;// Number of columns.
std::vector<T> mat;// array of T type variables to represent the matrix.
Например, если у меня было 3 строк и 3 столбцов и вектор массив INT из 1,2,3,4,5,6,7,8,9, замена строк 0 и 1 показала бы это как 4,5,6,1,2,3,7,8,9.
Таким образом, создание свопа происходит не из-за проблемы, но я не понимаю, как это сделать: Как вы собираетесь сделать это с сложностью O (1)?
Что я хотел сделать, это индивидуально переключаться между каждым типом в строке/столбце, но тогда это будет O (n), правильно? Потому что это будет зависеть от количества элементов в каждой строке/столбце. не
EDIT: Пример кода для того, что я пробовал:
void swap_rows(const size_t& r1, const size_t& r2) {
for (size_t i = 0; i < _C; i++)
{
T temp = mat[i + (r1 * _C)];
mat[i + (r1 * _C)] = mat[i + (r2 * _C)];
mat[i + (r2 * _C)] = temp;
}
}
Но я считаю, что это O (п) сложность, поэтому не годен: р
Пожалуйста, покажите нам, что вы пробовали –
Пойдемте несколько минут, так как я только рассматривал его в теории до сих пор (не было смысла делать это, если бы это был не ответ, верно?: P) – MrGuy
представление как простой вектор, я не думаю, что это возможно. – molbdnilo