Ir ao conteúdo

Python Convertendo c++ para Python (fins de estudos) (Resolvido)


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Gostaria que alguém de enorme coração fizesse uma 'conversão/tradução' desse algoritmo que está em c++ para python, da questão https://www.urionlinejudge.com.br/judge/en/problems/view/2305 ficaria muitoooooooooooo super grato se alguém conseguir, vai fazer uma pessoa muito feliz kk.

 

#include <iostream>
using namespace std;

int main() {

    int l, c, m, n, i, j, k;
    int a[1000][1000], b[1000][1000];
    
    cin >> l >> c >> m >> n;
    
    for (i = 0; i < l; i++)
        for (j = 0; j < c; j++)
            cin >> a[i][j];
            
    for (i = 0; i < l; i++) {
        b[i][0] = 0;
       
        for (j = 0; j < n; j++)
            b[i][0] += a[i][j];
            
        for (j = 1; j < c-n+1; j++)
            b[i][j] = b[i][j-1] + a[i][j+n-1] - a[i][j-1];
    }
    
    for (j = 0; j < c-n+1; j++) {
        a[0][j] = 0;
        
        for (i = 0; i < m; i++)
            a[0][j] += b[i][j];
        
        for (i = 1; i < l-m+1; i++) 
            a[i][j] = a[i-1][j] + b[i+m-1][j] - b[i-1][j];
    }
    
    int max = 0;
    for (i = 0; i < l-m+1; i++)
        for (j = 0; j < c-n+1; j++)
            if ( a[i][j] > max )
                max = a[i][j];
                
    cout << max;

    return 0;
}

Muito obrigado!!!

  • Curtir 1
  • Solução
Postado

@Dark-Programação      para converter você precisa substituir os comandos , por exemplo o comando cin  seria input , e cout seria print , mas não podemos fazer o exercício para você , pois é contra as regras do fórum , então faça e poste aqui para vermos como está e em que podemos ajudar .

  • Obrigado 1
Postado
40 minutos atrás, devair1010 disse:

@Dark-Programação      para converter você precisa substituir os comandos , por exemplo o comando cin  seria input , e cout seria print , mas não podemos fazer o exercício para você , pois é contra as regras do fórum , então faça e poste aqui para vermos como está e em que podemos ajudar .

Esse a e b são duas matrizes ?

adicionado 34 minutos depois
40 minutos atrás, devair1010 disse:

@Dark-Programação      para converter você precisa substituir os comandos , por exemplo o comando cin  seria input , e cout seria print , mas não podemos fazer o exercício para você , pois é contra as regras do fórum , então faça e poste aqui para vermos como está e em que podemos ajudar .

Muito obrigado !! Eu conseguir fazer, não precisei traduzir, conseguir seguir uma linha de raciocínio parecida e fiz, o que tinha me quebrado era como eu ia analisar as áreas que podia ser MxN mas eu conseguir, valeu mesmo :D

  • Curtir 1
Postado
16 horas atrás, devair1010 disse:

@Dark-Programação      para converter você precisa substituir os comandos , por exemplo o comando cin  seria input , e cout seria print , mas não podemos fazer o exercício para você , pois é contra as regras do fórum , então faça e poste aqui para vermos como está e em que podemos ajudar .

Cara poderia ver se essa conversão estaria correta ? Pois a resposta algumas bate e outras não.

 

#include <iostream>
using namespace std;

int main() {

    int l, c, m, n, i, j, k;
    int a[1000][1000], b[1000][1000];
    
    cin >> l >> c >> m >> n;
    
    for (i = 0; i < l; i++)
        for (j = 0; j < c; j++)
            cin >> a[i][j];
            
    for (i = 0; i < l; i++) {
        b[i][0] = 0;
       
        for (j = 0; j < n; j++)
            b[i][0] += a[i][j];
            
        for (j = 1; j < c-n+1; j++)
            b[i][j] = b[i][j-1] + a[i][j+n-1] - a[i][j-1];
    }
    
    for (j = 0; j < c-n+1; j++) {
        a[0][j] = 0;
        
        for (i = 0; i < m; i++)
            a[0][j] += b[i][j];
        
        for (i = 1; i < l-m+1; i++) 
            a[i][j] = a[i-1][j] + b[i+m-1][j] - b[i-1][j];
    }
    
    int max = 0;
    for (i = 0; i < l-m+1; i++)
        for (j = 0; j < c-n+1; j++)
            if ( a[i][j] > max )
                max = a[i][j];
                
    cout << max;

    return 0;
}
L, C, M, N = input().split()
l = int(L)
c = int(C)
m = int(M)
n = int(N)
matriz = [0] * l
acumulado = [0] * l
max_ponto = 0
for i in range(l):
    entrada = list(map(int, input().split()))
    matriz[i] = list(entrada)
    acumulado[i] = list(entrada)
a = matriz
b = acumulado

for i in range(len(b)):
    if i<l:
        b[i][0] = 0
        for j in range(len(b[i])):
            if j < n:
                b[i][0] += a[i][j]
        for j in range(len(b[i])):
            if 0 < j < (c-n+1):
                b[i][j] = b[i][j-1] + a[i][j+n-1] - a[i][j-1]

for j in range(len(a)):
    if j < (c-n+1):
        a[0][j] = 0
        for i in range(len(a[j])):
            if i < m:
                a[0][j] += b[i][j]
        for i in range(len(a[j])):
            if 0 < i < (l-m+1):
                a[i][j] = a[i-1][j] + b[i+m-1][j] - b[i-1][j]

for i in range(len(a)):
    if i < l-m+1:
        for j in range(len(a[i])):
            if j < (c-n+1):
                if a[i][j] > max_ponto:
                    max_ponto = a[i][j]
print(max_ponto)

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!