Pesquisar este blog

Livros Recomendados

quarta-feira, 17 de março de 2021

URI (BEECROWD) - 2635 - Navegador Web - Iniciante - C e C++

Plataforma: URI (BEECROWD)

Problema2635

Enunciado:

Lucas é um rapaz bem radical quando o assunto envolve licenças de software. Desde que começou sua graduação em engenharia da computação, ele procura desenvolver todas as ferramentas que necessita. Tudo isso começou após experiências ruins ao utilizar softwares proprietários. Agora, ele acredita que um programador de verdade deve ser autossuficiente, ou seja, deve construir todos os programas que precisa, desde uma simples calculadora até seu próprio sistema operacional.

Este semestre, Lucas está cursando a disciplina de desenvolvimento de sistemas web. Para continuar sua filosofia de vida, utilizando apenas softwares construı́dos por ele mesmo, Lucas já está programando seu próprio web browser. Grande parte do trabalho foi concluı́da, porém algumas funcionalidades ainda precisam ser finalizadas.

O navegador de Lucas possui um campo de busca onde o usuário poderá inserir uma palavra chave, e ao clicar em um botão de confirmação, ele será redirecionado para outra página com os resultados de sua pesquisa. Quando alguma string for digitada no campo de busca, Lucas quer que seu programa exiba, logo abaixo, algumas opções para auto completar esta string de acordo com as buscas já realizadas pelo usuário.

Por exemplo, se as palavras “algoritmos” e “algas” já foram pesquisadas, ao digitar a string “alg”, o programa deverá sugerir as palavras “algoritmos” e “algas”. Portanto, para cada string digitada, o programa deverá sugerir palavras pesquisadas anteriormente e que possuem como prefixo esta string. Caso alguma palavra seja igual a string digitada, ela também deve ser sugerida.

Lucas está preocupado com a quantidade de palavras que seu programa pode sugerir, além do tamanho máximo que elas podem alcançar. Por isso, ele pediu que você o ajude escrevendo um programa em que dadas algumas palavras já pesquisadas e uma série de consultas compostas por uma string, indique quantas palavras o navegador deverá sugerir ao usuário, além do comprimento da maior dessas palavras.

Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>
#include <string.h>

int main() {
    
    int n, q, i, wordSize, strSize, iguais, biggest;
    scanf("%d ", &n);

    char words[10000][110], str[110], temp[110];
    for (i = 0; i < n; i++)
        scanf("%s", words[i]);
    
    scanf("%d ", &q);
    
    while (q--) {
        
        scanf("%s", str);
        strSize = strlen(str);
        iguais = 0;
        biggest = 0;
        
        for (i = 0; i < n; i++) {
            
            strncpy(temp, words[i], strSize);
            temp[strSize] = '\0';
            
            if (!strcmp(temp, str)) {
                
                iguais++;
                wordSize = strlen(words[i]);
                
                if (wordSize > biggest)
                    biggest = wordSize;
                    
            }
            
        }
        
        if (iguais)
            printf("%d %d\n", iguais, biggest);
        else
            printf("-1\n");
            
    }
    
    return 0;
    
}

Código em C++:

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
    int n, q;
    cin >> n;
    vector<string> words;
    string str;
    for (int i = 0; i < n; i++) {
        cin >> str;
        words.push_back(str);
    }
    cin >> q;
    while (q--) {
        cin >> str;
        int strSize = str.size();
        int iguais = 0;
        int biggest = 0;
        for (int i = 0; i < n; i++) {
            if (!words[i].substr(0, strSize).compare(str)) {
                iguais++;
                int wordSize = words[i].size();
                if (wordSize > biggest)
                    biggest = wordSize;
            }
        }
        if (iguais)
            cout << iguais << " " << biggest << endl;
        else
            cout << "-1" << endl;
    }
    return 0;
}

Nenhum comentário:

Postar um comentário

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