我正在为zoj 1733编写程序,问题出在第8行:
else if(x[i] == y[j])return f(i-1,j-1)+1;
为什么我无法使用" x [i]"而x是一个字符串?而且我不理解提示"下标值不是数组,指针或向量"。以下是我的代码:
#include <iostream>
using namespace std;
string x,y;
int f(int i,int j){
int x,y;
if(i==0 || j==0)return 0;
else if(x[i] == y[j])return f(i-1,j-1)+1;
else {
x=f(i-1,j);
y=f(i,j-1);
if(x>y)return x;
else return y;
}
}
int main(int argc, char *argv[]) {
int i,j;
while(cin>>x>>y){
i=x.size();j=y.size();
cout<<f(i,j)<<endl;
}
return 0;
}
答案 0 :(得分:4)
您将x
和y
声明为字符串全局变量,并将其声明为整数局部变量。当你在函数内部访问它们时,它会考虑整数版本,因为它们在更近的范围内。更改其中任何一个的名称,它应该可以正常工作。
编辑:通过“其中任何一个”我的意思是更改全局变量或局部变量的名称,而不是x或y:)
您还可以使用::x
和::y
引用函数内的全局变量。这将通知编译器访问全局的,但我真的建议只更改变量名称。