Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 2520. Mostrar todas as postagens
Mostrando postagens com marcador 2520. Mostrar todas as postagens

segunda-feira, 15 de março de 2021

URI (BEECROWD) - 2520 - O Último Analógimôn - Iniciante - C e C++

O Último Analógimôn é o problema resolvido aqui! Vamos acompanhar as soluções em C e C++?

Plataforma: URI (BEECROWD)

Problema2520

Enunciado:

Analógimôn Go! é um jogo bastante popular. Em sua jornada, o jogador percorre diversas cidades capturando pequenos monstrinhos virtuais, chamados analógimôns. Você acabou de chegar em uma cidade que contém o último analógimôn que falta para sua coleção!

A cidade pode ser descrita como um grid de N linhas e M colunas. Você está em uma dada posição da cidade, enquanto o último analógimôn está em outra posição da mesma cidade. A cada segundo, você pode se mover (exatamente) uma posição ao norte, ao sul, a leste ou a oeste. Considerando que o analógimôn não se move, sua tarefa é determinar o menor tempo necessário para ir até a posição do monstrinho.

A figura abaixo descreve o exemplo da entrada, e apresenta um caminho percorrido em 5 segundos. Outros caminhos percorridos no mesmo tempo são possíveis, mas não há outro caminho que pode ser percorrido em um tempo menor.


Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>
#include <math.h>

int main() {
    
    int n, m, i, j, k, r, city[100][100], pos[4];
    
    while (scanf("%d %d ", &n, &m) != EOF) {
        k = 0;
        for (i = 0; i < n; i++) {
            for (j = 0; j < m; j++) {
                scanf("%d ", &city[i][j]);
                if (city[i][j]) {
                    pos[k++] = i;
                    pos[k++] = j;
                }
            }
        }
        r = abs(pos[2]-pos[0]) + abs(pos[3]-pos[1]);
        printf("%d\n", r);
    }
    
    return 0;
}

Código em C++:

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    
    int n, m, i, j, k, city[100][100], pos[4];
    
    while (cin >> n >> m) {
        k = 0;
        for (i = 0; i < n; i++) {
            for (j = 0; j < m; j++) {
                cin >> city[i][j];
                if (city[i][j]) {
                    pos[k++] = i;
                    pos[k++] = j;
                }
            }
        }
        cout << abs(pos[2]-pos[0]) + abs(pos[3]-pos[1]) << endl;
    }
    
    return 0;
}

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas