作者tw00088437 (喵貓 loves fish)
看板C_and_CPP
標題[問題] 嘗試用new作二維陣列結果上傳RE
時間Thu Dec 3 01:07:05 2009
遇到的問題: (題意請描述清楚)
執行時發生錯誤 (SIGABRT)(6)!!
系統呼叫 abort 函式!!
可能的原因為取用了超過string長度的位置、指標錯誤或 overflow。terminate called
after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc
sh: line 1: 1347 已經終止
希望得到的正確結果:
http://zerojudge.tw/ShowProblem?problemid=b024
這是原題
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
dev c++
有問題的code: (請善用置底文標色功能)
#include<iostream>
#define m 10001
#define n 20001
using namespace std;
int main()
{
int *ans = new int[m*n];
for(int i = 1; i < m; i++)
{
*(ans + n*i ) = 1;
}
for(int i=1;i<m;i++)
for(int j=1;j<=2*i;j++)
{
*(ans + n*i + j) += ( *(ans + n*(i-1) + j) + *(ans + n*i + j-1) );
if(*(ans + n*i + j)>10000)
*(ans + n*i + j)%=10000;
}
int c;
while(cin>>c)
{
if(!c)
break;
cout<<*(ans+ c*n + c*2)<<endl;
}
delete [] ans;
return 0;
}
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.105.23
推 ledia:計算一下你的記憶體用量~ 12/03 01:17
→ akasan:網頁上寫 時間限制 :10s | 記憶體限制 : 64MBytes 12/03 01:17
→ tw00088437:可是記憶體過大不是會給MLE嘛@@" 12/03 01:25
→ tw00088437:噢 好像爆了十幾倍...那可以給點題示怎麼減少嗎 > <" 12/03 01:27