2017-06-21 20 views
0

我正在寫的程序的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; 
} 

回答

4

您聲明xy作爲字符串全局變量,也可作爲整型局部變量。當你在函數內部訪問它們時,它會考慮整數版本,因爲它們在更接近的範圍內。改變其中任何一個的名稱,它應該工作正常。

編輯:由「無論是他們的」我的意思是改變全局變量或局部變量,而不是X或Y :)的名稱

您還可以通過使用::x引用函數中的全局變量和::y。這將通知編譯器訪問全局變量,但我真的建議只更改變量名稱。

+0

是的,它工作正常,謝謝! –

相關問題