0
4 Комментария

Помогите решить задачку :)
Условие
Вам дана матрица целых неотрицательных чисел Aij. Требуется вычислить частотную матрицу Bij, где Bij — число вхождений числа j в строку с номером i матрицы A. Вычисление частот следует выполнить только для чисел от minAij до maxAij.
Формат входных данных
Первая строка входного файла содержит целые числа N,M — размеры матрицы A. Следующие N строк содержат M целых неотрицательных чисел каждая — числа матрицы Aij.
Формат выходных данных
Выходной файл должен содержать матрицу размера N×maxAij — матрицу B.
Ограничения
1N,M10000

NM106

0Aij100
Мой не правильный на данный момент вариант
0

import math
Data_A = input().split()
Max_A = 0
N = 0
List = []
T_list = []
 for j in Data_A:
    List.append(int(j))
Max_A = max(List)
N = List[0]
 Final_list = []
 x = 0
while x < N:
   Any_string = input().split()
   for k in Any_string:
      T_list.append(int(k))
   b = 1
   while b <= Max_A:
       Final_list.append(T_list.count(b))
       b +=1
   T_list.clear()
   x +=1
 i = 1
while i <= Max_A:
    if sum(Final_list) == 0:
        break
    Sum = sum(Final_list[Max_A-i::Max_A])
    i+=1
    if Sum != 0:
        continue
    i-=1
    j = Max_A-i+1
    k = Max_A-i
    Sum_null = 0
    while j > 0:
        while k < len(Final_list):
            Sum_null += Final_list[k]
            k += Max_A
        j-=1
        k -= Max_A*Max_A
        k-=1
    if Sum_null == 0:
        break
     x = Max_A-i
    m = 0
    while x < Max_A*N:
        Final_list.pop(x)
        Final_list.insert(m,0)
        x += Max_A
        m += Max_A
 i = 0
while i < len(Final_list):
    print(Final_list[i], end=' ')
    i+=1
    if (i) % Max_A != 0:
        continue
    print()

Может я не до конца понял правила построения частотной матрицы, но задачу которую себе поставил — нулевые столбцы ставить первыми и сдвигать вправо остальные — решил (помимо построения самой частотной матрицы). На изучение питона потратил пару часов, так что просьба красоту кода не хейтить сильно :)))


Percedal добавил комментарий

Забыл указать стандартный вход и выход:
Стандартный вход:
3 2
1 2
1 1
2 2

Стандартный выход:
0 1 1
0 2 0
0 0 2

Percedal добавил комментарий

Ну мой код то же самое построит, если вход тот же вбить, а также другие матрицы считает и нулевые столбцы убирает влево. Но проверяющая система этот код считает за неверный)

Percedal добавил комментарий

import math
Data_A = input().split()
Max_A = 0
N = 0
List = []
T_list = []

for j in Data_A:
List.append(int(j))
Max_A = max(List)
N = List[0]

Final_list = []

x = 0
while x < N:
Any_string = input().split()
for k in Any_string:
T_list.append(int(k))
b = 1
while b <= Max_A:
Final_list.append(T_list.count(b))
b +=1
T_list.clear()
x +=1

i = 1
while i 0:
while k < len(Final_list):
Sum_null += Final_list[k]
k += Max_A
j-=1
k -= Max_A*Max_A
k-=1
if Sum_null == 0:
break

x = Max_A-i
m = 0
while x < Max_A*N:
Final_list.pop(x)
Final_list.insert(m,0)
x += Max_A
m += Max_A

i = 0
while i < len(Final_list):
print(Final_list[i], end=' ')
i+=1
if (i) % Max_A != 0:
continue
print()

Percedal добавил комментарий

Чето в заголовке некоторые символы коряво вставились…

Добавить комментарий