#5222: RE請高手幫忙解惑


leonyun520 (柚子)

學校 : 國立中山大學
編號 : 18951
來源 : [175.180.102.77]
最後登入時間 :
2011-12-21 18:20:35
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;
 
ZeroJudge Forum