这段程序为什么出错?
来源:百度知道 编辑:UC知道 时间:2024/06/27 11:34:13
#include<iostream>
using namespace std;
int min( int a, int b )
{
if( a < b )
return a;
else
return b;
}
void main()
{
int *pCur, *pPre;
char *pStr;
int length;
cin >> length;
pCur = new int[length];
pPre = new int[length];
pStr = new char[length+1];
pPre[0] = pPre[1] = pCur[0] = pCur[1] = 0;
cin >> pStr;
for( int i = length-2; i >= 0; i-- )
{
for( int j = 2; j <= length - i; j++ )
{
if( pStr[i] == pStr[i+j-1] )
pCur[j] = pPre[j-2];
else
pCur[j] = min( pCur[j-1], pPre[j-1] ) + 1;
}
if( i == 0 )
continue;
int *pTemp;
pTemp = pPre;
pPre = pCur;
pCur = pTemp;
}
cout << pCur[length] << endl;
/* delete []pCur;
delete []pPre;
delete []pStr; */
using namespace std;
int min( int a, int b )
{
if( a < b )
return a;
else
return b;
}
void main()
{
int *pCur, *pPre;
char *pStr;
int length;
cin >> length;
pCur = new int[length];
pPre = new int[length];
pStr = new char[length+1];
pPre[0] = pPre[1] = pCur[0] = pCur[1] = 0;
cin >> pStr;
for( int i = length-2; i >= 0; i-- )
{
for( int j = 2; j <= length - i; j++ )
{
if( pStr[i] == pStr[i+j-1] )
pCur[j] = pPre[j-2];
else
pCur[j] = min( pCur[j-1], pPre[j-1] ) + 1;
}
if( i == 0 )
continue;
int *pTemp;
pTemp = pPre;
pPre = pCur;
pCur = pTemp;
}
cout << pCur[length] << endl;
/* delete []pCur;
delete []pPre;
delete []pStr; */
注释部分无错,错误在前面。
应该是越界了吧
pStr = new char[length+1];
下面你又有
for( int i = length-2; i >= 0; i-- )
{
for( int j = 2; j <= length - i; j++ )
{
if( pStr[i] == pStr[i+j-1] )
Str[i+j-1],j=3的时候就越界了