O Último Analógimôn é o problema resolvido aqui! Vamos acompanhar as soluções em C e C++?
Plataforma: URI (BEECROWD)
Problema: 2520
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; }
Nenhum comentário:
Postar um comentário