我在XP虛擬機中的MingW編譯器上運行CodeBlocks。我在一些簡單的代碼寫的,可訪問的cl1p,回答在CodeChef算法的問題(當然這只是回答這部分,因爲我還沒有包括多個測試用例的循環。調試和編譯C++程序後的不同輸出
不過,我的問題是,而在調試模式下運行,它給出了5正確的輸出,對於輸入:
然而,當我構建並運行它,它給出了荒謬的,巨大的產出131078,看到了什麼ms像垃圾給我。我不明白這到底是怎麼回事,但我猜測這與動態內存分配有關。這裏有什麼問題,我該如何解決它?我甚至通過BotSkool在線編譯器運行它,並且它工作正常。在爲測試用例添加循環之後,代碼甚至可以在CodeChef上正常工作!
#include <iostream>
using namespace std;
int main()
{
// Take In number of rows
int numofrows;
cin >> numofrows;
// Input Only item in first row
int * prevrow;
prevrow = new int[1];
cin >> prevrow[0];
// For every other row
for (int currownum = 1; currownum < numofrows; currownum++)
{
// Declare an array for that row's max values
int * currow;
currow = new int[currownum+1];
int curnum;
cin >> curnum;
// If its the first element, max is prevmax + current input
currow[0] = prevrow[0] + curnum;
// for every element
int i = 1;
for (; i <= currownum; i++)
{
cin >> curnum;
// if its not the first element, check whether prevmax or prev-1max is greater. Add to current input
int max = (prevrow[i] > prevrow[i-1]) ? prevrow[i] : prevrow[i-1];
// save as currmax.
currow[i] = max + curnum;
}
// save entire array in prev
prevrow = new int[i+1];
prevrow = currow;
}
// get highest element of array
int ans = 0;
for (int j=0; j<numofrows; j++)
{
if (prevrow[j] > ans)
{
ans = prevrow[j];
}
}
cout << ans;
}
你應該發佈實際的代碼,而不是鏈接。 – 2010-01-01 22:11:26