读书人

请问错在哪里c++

发布时间: 2012-09-03 09:48:39 作者: rapoo

请教错在哪里,c++
#include <iostream>
#include <string.h>///还想问下,这里写<string>为什么不可以
using namespace std;

int main()
{
string str1;
string str2;
const char *a,*b;
while(true)
{
cin>>str1>>str2;
//cout<<str1.length()<<endl;
a=new char [str1.length()];
b=new char [str2.length()];
a=str1.c_str();
b=str1.c_str();
int len1=strlen(a);
int len2=strlen(b);
int i,j;
int **dp=new int [len1+1][len2+1];//这句报错,cannot appear in a constant-expression
dp[0][0]=0;
for(i=1;i<len1;i++)
for(j=1;j<len2;j++)
if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
cout<<dp[len1][len2]<<endl;

}
return 0;
}


[解决办法]
不清楚LZ想实现什么功能....

C/C++ code
#include <iostream>#include <string>#include <cstring>#include <algorithm>using namespace std;int main(){    string str1;    string str2;    string jud;    do    {        cout << "Enter string1 and string2:" << endl;        cin >> str1 >> str2;        char *a = new char[str1.length() + 1];        char *b = new char[str2.length() + 1];        strncpy(a, str1.c_str(), str1.length());        a[str1.length()] = '\0';        strncpy(b, str2.c_str(), str2.length());        b[str2.length()] = '\0';        int len1 = strlen(a);        int len2 = strlen(b);        int **dp = new int*[len1 + 1];        for (int ix = 0; ix != len1 + 1; ++ix)        {             int *p = new int[len2 + 1];             dp[ix] = p;        }        int flag = 0;        for(int i = 0; i != len1 + 1; i++)        {            for(int j = 0; j < len2 + 1; j++)            {                if (a[i] == b[j])                    dp[i][j] = flag + 1;                else                    dp[i][j] = 0;            }        }        for(int i = 0; i != len1 + 1; i++)        {            for(int j = 0; j < len2 + 1; j++)            {                cout << dp[i][j] << " " ;            }            cout << endl;        }        delete [] a;        delete [] b;        for (int ix = 0; ix != len1 + 1; ++ix)        {             delete [] dp[ix];        }        delete [] dp;        cout << "END ? (y = yes, n = no) " << endl;        cin >> jud;    }while(jud[0] != 'n' && jud[0] != 'N');    return 0;}
[解决办法]
#include <string.h>///还想问下,这里写<string>为什么不可以

<string.h>是C头文件,内部包含一系列处理字符串的函数的声明,所处理的字符串是按照C语言规定的连续存储以'\0'结尾的字符集合
<string>是C++头文件,内部包含C++标准模板类string的声明和实现,string继承自标准模板vector,实现了自动内存管理和大多数字符串常用操作

看着很像?看着很像?看着很像?

读书人网 >C++

热点推荐