看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev-c 問題(Question): 之前的函式我也是丟二維陣列進去做計算 執行是可以的 這次丟進去要來算一起算遞回就掛了 invalid initialization of reference of type 'int (&)[24][24]' from expression of type 'int[((unsigned int)((int)w))][((unsigned int)((int)h))]' 出現這樣的錯誤 若指定24 會過所以以上先不管 不過遞回 會出現 現在主要問題是想讓陣列 能一值丟入遞回內 但好像會跟上面的...問題一樣 程式碼(Code):(請善用置底文網頁, 記得排版) void RSAT(int x,int y,int (&gray)[24][24]); int main () { int gray[w][h],i,j; for(j=0;j<4;j++) { for(i=0;i<4;i++) { cout<<gray[i][j]<<"座標"<<i<<j<<":"; RSAT(i,j,sa); //編譯器一值是說這行錯誤 } } } void RSAT(int x,int y,int (&gray)[24][24]) { int sum=0; if (x==0&&y==0) { sum=gray[x][y]; } else if(y==0) { sum==gray[x][y] } else if(x<0) { sum=RSAT(0,y-1,gray)+ RSAT(x+1,y-1,gray)-RSAT(x,y-2,gray); } else { sum=RSAT(x-1,y-1,gray)+ RSAT(x+1,y-1,gray)-RSAT(x,y-2,gray) ; } cout<<sum<<endl; } 補充說明(Supplement): gray[w][h] 是有先崇bmp內讀取到w h 都是24 然後有先用迴圈 把各值放入 gray內了 希望不會又是...我笨蛋搞錯啥東西了QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.109.77 ※ 編輯: pigcat1315 來自: 114.34.109.77 (08/11 23:53)
LPH66:呃 函式期望一個 500x500 的陣列 你給他 6x6 是...? 08/11 23:56
pigcat1315:我原本設定 一樣大@@ 可是也是一 樣 08/11 23:58
pigcat1315:我在改成原版的好了 等等 08/12 00:00
※ 編輯: pigcat1315 來自: 114.34.109.77 (08/12 00:05) ※ 編輯: pigcat1315 來自: 114.34.109.77 (08/12 00:06)
pigcat1315:如果是另外宣告 就可以 但如果用找到的w h 就不行 08/12 00:15
※ 編輯: pigcat1315 來自: 114.34.109.77 (08/12 00:24)
LPH66:因為函式要的是固定的 24x24 所以只有固定 24x24 的才可以 08/12 00:24
LPH66:其他統統不行 08/12 00:24
pigcat1315:恩 有暫時先更改成固定的 剩遞回部份><" 08/12 00:26
pigcat1315:這樣遞回內也沒法 直接把陣列往下丟摟? 08/12 00:29
yauhh:嗯...請問你讓遞迴程式不傳回值,卻要把遞迴呼叫的結果相加, 08/12 00:41
yauhh:是打算幹什麼呀? 08/12 00:41
pigcat1315:我要算Rotated Summed Area Table 值 08/12 00:54
yauhh:我記得陣列給個負索引值,是往前找到別的變數去 08/12 00:59
pigcat1315:負索引值? 08/12 01:08
yauhh:對啊,你RSAT第一個判斷不是說y<0嗎,負索引值,就是往前找啊 08/12 01:35
pigcat1315:我好像判斷有點寫錯 我在研究一下... 08/12 01:43
※ 編輯: pigcat1315 來自: 114.34.109.77 (08/12 01:59)
pigcat1315:主要問題是 再把陣列傳給遞回嗎... 08/12 02:00
※ 編輯: pigcat1315 來自: 114.34.109.77 (08/12 02:01)
tropical72:我看過 Pro_Solve 那篇,看完後不知為何要設 array ? 08/12 02:31
yauhh:不必,就算遞迴呼叫傳回陣列,現在程式矩陣加法也會破功. 08/12 02:56
yauhh:應該要一步一步來,遞迴一定會產生新陣列,用參數表達也可以. 08/12 02:57
yauhh:然後改掉的陣列做矩陣加法,怎麼加? 矩陣加法函數也要寫一下 08/12 02:57
pigcat1315:t大因為我想用陣列來記錄每個點的值 08/12 03:10
pigcat1315:看錯意思 丟進去是因為 我有先用陣列紀錄灰階值 08/12 03:14
tropical72:有點好奇的是,即使紀錄了YMean/Gray,是否先算其 x,y 頂 08/12 03:40
tropical72:點,再做RSTA方便些? (也可能有其它實際問題我沒考量..) 08/12 03:40
pigcat1315:t大是指先求出RSAT 所的點有哪些在去求值嗎? 08/12 03:49
pigcat1315:如果是這樣也得紀錄 每個x y 吧@@ 08/12 03:51
using namespace std; void sum(int ,int); int main (void) { int a=2,b=2; sum(a,b); system("pause"); return 0; } void sum(int a,int b) { int s; if(a==0&&b==0) { s=1; } else { sum(a-1,b-1); } cout<<s<<endl; } 再問個簡單的遞迴....為何 這樣跑出來的值QQ 不是只有 一個1 結果卻是 1 2008950864 16384 ※ 編輯: pigcat1315 來自: 114.32.115.221 (08/12 03:55)