Для двоичной матрицы mxn сумма вектора строки определяется как (r 1 , r 2 ... r i ), где i в (1к n) .., что означает, что количество номеров единиц (1) в строке 1 равно r 1 , строка 2 равно r 2 .. и строка m равно r m.Теперь в данной матрице 1 расположены в максимальной форме, т. Е. Для каждой строки первые ячейки r i содержат 1, а оставшиеся ячейки от r i + 1 до r n содержит ноль.Теперь для матрицы вышеприведенной формы необходимо вычислить число единиц в каждом столбце ... которое будет называться векторной суммой столбца.
Решение со сложностью o (mn) уже существует
Если задана матрица 6x5 с векторной суммой строки как R = (3,4,5,2,3).используя это, создайте двоичную матрицу максимальной формы:
3 -> | 1 1 1 0 0 0 |
4 -> | 1 1 1 1 0 0 |
5 -> | 1 11 1 1 0 |
2 -> | 1 1 0 0 0 0 |
3 -> | 1 1 1 0 0 0 |
Теперь вычислите вектор суммы столбцов.. для приведенного выше примера это будет C = (5, 5, 4, 2, 1, 0)
Текущий код:
int m = 5;
int n = 6;
int row[m] = {3,4,5,2,3};//given: value in this array will always be <=n
int column_maximalColumnVector[n];// initialised to zero
for (int i = 0; i < m; i++) {
for (int j = 0; j < row[i]; j++) {
column_maximalColumnVector[j]++;
}
}