Как искать значение в сбалансированном бинарном дереве?
Чтобы создать из этого сбалансированное дерево я беру элементы с индексом floor(arr.length / 2)
Ну да я нашел первый на самом верху дерева, ну а потом? Левый узел меньше тройки а правая больше, но под правым узлом есть еще тройка. По какой логике надо искать ?
Как поменять порядок битов в байте C?
Сколько понадобится компов объединённых вместе, чтобы решить эту задачу (мою и автора вопроса по ссылке)?
На своём ноуте с картой NVIDIA GTX 1050 Ti мне бы понадобилось около 150 лет... :)
почему формула для вычисления ветвей предикатов 2^n а не 2*n, ведь количество путей ровно в два раза больше
2.По второму фото: почему самый верхний путь когда ветви разошлись на Истину и Ложь, Ложь пошла в Истину ?
Как можно реализовать, поворот динамического массива (матрица), без доп памяти?
#include <stddef.h>
#include <stdio.h>
typedef int T;
void rotate(T *p, size_t m, size_t n, size_t (*turn)(size_t m, size_t n, size_t idx))
{
size_t i, j, k;
for (i = 0; i < m * n; ++i) {
T tmp0, tmp1;
for (j = 0; j < i; ++j) {
for (k = turn(m, n, j); k != i && k != j; k = turn(m, n, k)) {
}
if (k == i)
break;
}
if (j < i)
continue;
tmp0 = p[i];
for (j = turn(m, n, i); ; j = turn(m, n, j)) {
tmp1 = p[j];
p[j] = tmp0;
tmp0 = tmp1;
if (j == i)
break;
}
}
}
void dump(size_t m, size_t n, T p[m][n])
{
size_t i, j;
for (i = 0; i < m; ++i)
for (j = 0; j < n; ++j)
printf("%d%s", p[i][j], j == n - 1 ? "\n" : ", ");
}
size_t turn_ccw(size_t m, size_t n, size_t idx)
{
return (n - 1 - idx % n) * m + (idx / n);
}
size_t turn_cw(size_t m, size_t n, size_t idx)
{
return (idx % n) * m + m - 1 - (idx / n);
}
#define M 5
#define N 7
int main()
{
size_t i, j;
T a[M][N];
for (i = 0; i < M; ++i)
for (j = 0; j < N; ++j)
a[i][j] = i * N + j;
rotate(&a[0][0], M, N, turn_ccw);
dump(N, M, (T (*)[M])&a[0][0]);
printf("\n");
rotate(&a[0][0], N, M, turn_cw);
dump(M, N, (T (*)[N])&a[0][0]);
}
turn
преобразует линейный индекс элемента из оригинального массива в индекс элемента в повёрнутом массиве.Есть такой массив (50 элементов):
Задача: написать функцию которая полностью отсортирует данные максимум за 6 вызовов, с условием что за 1 вызов ни один элемент не сместиться больше чем на 5 позиций.
к сожалению, я не силен и был бы благодарен за помощь.
Как это сделать программно?
Почему в решениях с одинаковой сложностью существенная разница во времени расчета?
Все хорошо, но алгоритм не верно работает с унарным отрицанием.
Как исправить?