看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) iostream 問題(Question): http://truth.bahamut.com.tw/s01/201406/d465beda80ee55634255f10bd8ee87ce.JPG
餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> using namespace std; int main(){ int *arr; int m=0,n=0,y,u,z; //m=列 n=直 cin>>m>>n; y=n; u=n; z=n; arr=new int[m*n]; for(int i=0;i<n;i++) arr[i]=1; for(int j=0;j<m;j++){ arr[y]=1; y=y+n; } for(int j=1;j<m;j++){ for(int i=1;i<n;i++){ arr[i+u]=arr[i+u-1]+arr[i+u-z]; }u=u+n;} for(int i=0;i<m*n;i++) { cout<<arr[i]<<" "; if(i!=0&&(i+1)%n==0) cout<<endl; } delete []arr; return 0; } 補充說明(Supplement): 如題 把delete[]arr;這行刪掉倒是不會當掉 好奇怪喔 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.86.201.154 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1402209865.A.2DA.html
diabloevagto:你的排版實在太神奇了 06/08 15:02
diabloevagto:arr[i+u]=arr[i+u-1]+arr[i+u-z]; 06/08 15:08
diabloevagto:你這部份有問題 06/08 15:08
ga544523:恩我研究一下 06/08 15:16
RealJack:題目說要用new動態分配記憶體,而非直接宣告成區域變數 06/08 15:31
RealJack:delete是用在刪除動態配置的空間,不是用在事先配置的空間 06/08 15:33
diabloevagto:原po有用new沒錯啊 06/08 15:39
diabloevagto:基本上你那會當掉的原因就是你指標寫入到超出範圍 06/08 15:52
diabloevagto:http://ideone.com/6LaTdr 你參考看看吧 06/08 15:59
Feis:for (int j = 1; j < m; j++) .... 06/08 16:04
RealJack:sorry...沒看到new... 06/08 16:14
ga544523:第14行照feis大大說的改就可以了..感謝各位 06/08 16:23
johnpage:大於64k 06/19 07:57