Ir ao conteúdo
  • Cadastre-se

Shieda

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

3
  1. @arfneto É esse mesmo, se puder ajudar ficarei muito grato
  2. @kgin Atividade 1242 do URI Foi descoberta uma espécie alienígena de ácido ribonucleico (popularmente conhecido como RNA). Os cientistas, por falta de criatividade, batizaram a descoberta de ácido ribonucleico alienígena (RNAA). Similar ao RNA que conhecemos, o RNAA é uma fita composta de várias bases. As bases são B C F S e podem ligar-se em pares. Os únicos pares possíveis são entre as bases B e S e as bases C e F. Enquanto está ativo, o RNAA dobra vários intervalos da fita sobre si mesma, realizando ligações entre suas bases. Os cientistas perceberam que: - Quando um intervalo da fita de RNAA se dobra, todas as bases neste intervalo se ligam com suas bases correspondentes; - Cada base pode se ligar a apenas uma outra base; - As dobras ocorrem de forma a maximizar o número de ligações feitas sobre fitas; As figuras abaixo ilustram dobras e ligacões feitas sobre fitas. Sua tarefa será, dada a descrição de uma tira de RNAA, determinar quantas ligações serão realizadas entre suas bases se a tira ficar ativa. Entrada A entrada é composta por diversos casos de teste e termina com EOF. Cada caso de teste possui uma linha descrevendo a sequência de bases da fita de RNAA. Uma fita de RNAA na entrada contém pelo menos 1 e no máximo 300 bases. Não existem espaços entre bases de uma fita da entrada. As bases são 'B', 'C', 'F' e 'S'. Saída Para cada instância imprima uma linha contendo o número total de ligações que ocorre quando a fita descrita é ativada.
  3. #include <string.h> #include <stdlib.h> #include <stdio.h> #include <stack> using namespace std; int main(void) { string fita; while (cin >> fita) { string resp; int cont = 0; stack <char> pilha; for ( int i=0; i < fita.size(); i++) { if (fita[i] == 'S') resp += 'B'; else if (fita[i] == 'B') resp += 'S'; else if (fita[i] == 'C') resp += 'F'; else if (fita[i] == 'F') resp += 'C'; } for (int i=0; i < fita.size(); i++) { if (pilha.empty() || pilha.top() != resp[i]) {pilha.push(fita[i]);} else { while (true) { if (pilha.empty()) {i--; break;} else if (resp[i] == pilha.top() ) { cont++; pilha.pop(); i++; } else { i--; break; } if (i >= resp.size()) { i--; break; } } } } printf("%d\n", cont); } system ("pause"); return 0; } Sempre que coloco o programa pra rodar dá um erro na estrutura stack e não sei como resolver.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!