反向功能超出了我的 cpp 程序的范围
reverse function is out of scope in my cpp program
#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
int LCS(string x, string y, int n, int m)
{
int t[n + 1][m + 1];
for (int i = 0; i <= n; i++)
for (int j = 0; j <= m; j++)
{
if (i == 0 || j == 0)
t[i][j] = 0;
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
if (x[i - 1] == y[j - 1])
t[i][j] = 1 + t[i - 1][j - 1];
else
t[i][j] = max(t[i - 1][j], t[i][j - 1]);
}
return t[n][m];
}
int main()
{
string x;
string y = reverse(x.begin(), x.end());
cin >> x;
cout >> LCS(x, y, x.length(), y.length());
return 0;
}
op shows that the C:UserssagarVideoscpp_worklongest pallindromic subsequence LPAmain.cpp|29|error: conversion from 'void' to non-scalar type 'std::string' {aka 'std::__cxx11::basic_string<char>'} requested|
你应该在反转之前请求字符串,cin >> x;
应该在使用std::reverse
之前询问字符串,因为它是空的。
此行
cout>>LCS(x,y,x.length(),y.length());
有错别字,应该是cout << ...
.
std::reverse
不会返回反转的字符串,它会就地反转它,您不能将其分配给另一个std::string
。这是您显示的错误的来源。
字符串x
将被反转。
您可能需要类似以下内容:
string x;
string y;
cin >> x; //input x
y = x; //make a copy of x
reverse(y.begin(), y.end()); // reverse y
cout << LCS(x, y, x.length(), y.length());
其他注意事项:
C++标准不允许可变长度数组,int t[n + 1][m + 1];
C++无效,尽管一些编译器允许使用它。
不建议使用using namespace std;
。
因为不是#include <bits/stdc++.h>
.
相关文章:
- 如何通过cpp程序运行shell脚本
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 反向功能超出了我的 cpp 程序的范围
- CPP 程序中未定义的行为
- 如何调试Cpp程序中的析构函数
- Haskell堆栈设置 - 无法识别CPP程序
- 访问类成员的成员变量时 cpp 程序挂起
- 标头包含不是 .c 程序所必需的,而是.cpp程序需要的
- CPP 程序二查找两个给定日期之间的天数,conol CMD
- 如何将Juce图形与不同的cpp程序连接
- 使用System()从CPP程序中调用LN
- 为什么我的 cpp 程序在第一行后挂断
- CPP 程序在服务器上运行缓慢
- 如何将 .so 文件链接到 cpp 程序
- PMPI和OTF2:在CPP程序中链接C代码
- 从Ubuntu中的CPP程序创建新文件
- 我可以通过CPP程序中的数据库调用调用Java程序
- 如何用cpp程序读写EC(嵌入式控制器)寄存器
- CPP 程序不运行
- 在 ubuntu 的 shell 上编译 cpp 程序时出现问题