请问错在哪里,c++
请教错在哪里,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想实现什么功能....
#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,实现了自动内存管理和大多数字符串常用操作
看着很像?看着很像?看着很像?