Pesquisar este blog

Livros Recomendados

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

sexta-feira, 19 de março de 2021

URI (BEECROWD) - 2782 - Escadinha - Iniciante - C e C++

Soluções para o problema "Escadinha" abaixo!

Plataforma: URI (BEECROWD)

Problema2782

Enunciado:

Dizemos que uma sequência de números é uma escadinha, se a diferença entre números consecutivos é sempre a mesma. Por exemplo, “2, 3, 4, 5” e “10, 7, 4” são escadinhas. Note que qualquer sequência com apenas um ou dois números também é uma escadinha! Neste problema estamos procurando escadinhas em uma sequência maior de números. Dada uma sequência de números, queremos determinar quantas escadinhas existem. Mas só estamos interessados em escadinhas tão longas quanto possível. Por isso, se uma escadinha é um pedaço de outra, consideramos somente a maior. Por exemplo, na sequência “1, 1, 1, 3, 5, 4, 8, 12” temos 4 escadinhas diferentes: “1, 1, 1”, “1, 3, 5”, “5, 4” e “4, 8, 12”.


Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>
int main() {
    int n, escadinha[1001], v[1001], i, j = 0, dif;
    scanf("%i", &n);
    for (i = 0; i < n; i++)
        scanf("%i", &v[i]);
    if (n == 1 || n == 2)
        printf("1\n");
    else {
        dif = v[1] - v[0];
        escadinha[0] = 2;
        for (i = 1; i < n; i++) {
            if (v[i] - v[i-1] == dif)
                escadinha[j]++;
            else {
                j++;
                escadinha[j] = 1;
            }
            dif = v[i] - v[i-1];
        }
        printf("%i\n", j + 1);
    }
    return 0;
}

Código em C++:

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int n, x, i, j = 0, dif;
    vector<int> v, escadinha;
    cin >> n;
    for (i = 0; i < n; i++) {
    	cin >> x;
    	v.push_back(x);
    }
    if (n == 1 || n == 2)
        cout << "1" << endl;
    else {
        dif = v[1] - v[0];
        escadinha.push_back(2);
        for (i = 1; i < n; i++) {
            if (v[i] - v[i-1] == dif)
                escadinha[j]++;
            else {
                j++;
                escadinha.push_back(1);
            }
            dif = v[i] - v[i-1];
        }
        cout << ++j << 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