Renshinzen Ответов: 2

Как получить пользовательский ввод для массива символов в следующей программе? (С++)


В основной функции, как я могу получить пользовательский входной массив для char X и char Y? ie. вместо того чтобы присваивать значение char как Char X[ ]= "AGGTAB" или char Y[ ]= "GXTXAYB", как я могу дать его в качестве входных данных?

напр.:

ВХОД:
АГГТАБ
GXTXAYB

ВЫХОД:
Длина составляет 4

Что я уже пробовал:

/* A Naive recursive implementation of LCS problem */
#include<bits/stdc++.h>

int max(int a, int b);


int lcs( char *X, char *Y, int m, int n )
{
if (m == 0 || n == 0)
	return 0;
if (X[m-1] == Y[n-1])
	return 1 + lcs(X, Y, m-1, n-1);
else
	return max(lcs(X, Y, m, n-1), lcs(X, Y, m-1, n));
}


int max(int a, int b)
{
	return (a > b)? a : b;
}


int main()
{
    
  char X[] = "AGGTAB";
  char Y[] = "GXTXAYB";

int m = strlen(X);
int n = strlen(Y);

printf("Length of LCS is %dn", lcs( X, Y, m, n ) );

return 0;
}

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Renshinzen

Спасибо...я над этим поработаю.

2 Ответов

Рейтинг:
19

CPallini

Эй, парень, это так C++ !

#include <iostream>
#include <string>

int lcs( const std::string & X, const std::string  & Y, size_t m, size_t n )
{
  if (m == 0 || n == 0)
    return 0;
  if (X[m-1] == Y[n-1])
    return 1 + lcs(X, Y, m-1, n-1);
  else
    return std::max(lcs(X, Y, m, n-1), lcs(X, Y, m-1, n));
}

int main()
{
  std::string X,Y;

  getline(std::cin, X);
  getline(std::cin, Y);

  std::cout << "Length of LCS is " << lcs(X,Y, X.size(), Y.size()) << std::endl;
}


Рейтинг:
10

Richard MacCutchan

Воспользуйся получает, _getws[^].