a022.
迴文
| From: [140.117.195.238] |
發表日期
:
2011-06-19 21:50
執行時發生錯誤 (SIGSEGV)(11)!!
Segmentation fault, an address reference boundary error.(記憶體區段錯誤)
可能原因為:
* 通常為使用超過陣列範圍
* 指標指向不正確位址!
* 陣列初始化不正確!
* 嘗試在執行時期定義陣列長度!
sh: line 1: 6559 程式記憶體區段錯誤 /tmp/code_823756.exe <a022.in >/tmp/code_823756.out
是錯在指標指向不正確位址(s1轉到s2部分)??
還是其他原因呢??
請高手幫忙解惑
以下是我的程式碼(用LCS)
#include<iostream>
#include<string>
using namespace std;
#define MAX(a,b) (a>b)?a:b
void init(int count);
int sum[1001][1001];
int main()
{
string s1,s2;
while(getline(cin,s1))
{
int count=s1.size();
init(count);
for(int i=0;i!=count;++i)
{
int j=s1.size()-1;
j=j-i;
s2[j]=s1[i];
}
for(int i=1;i<=count;++i)
for(int j=1;j<=count;++j)
{
if(s1[i-1]==s2[j-1])
sum[i][j]=sum[i-1][j-1]+1;
else
sum[i][j]=MAX(sum[i-1][j],sum[i][j-1]);
}
if(sum[count][count]==count) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}
void init(int count)
{
for(int i=0;i<=count;++i) sum[i][0]=0;
for(int j=0;j<=count;++j) sum[0][j]=0;
}