int a[250][250], p[50][2];
//直接擴充陣列
2 3 5 2 3 4 5 6
其最大擴充陣列為
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 5 2 3 0 0 0
0 0 0 4 5 6 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
也就是說5的座標是(3,3) 而3=m+n-1,我們設其為A點
可以估算出最大陣列(50*50)的最大擴充陣列的A點為(99,99),99=m+n-1=50+50-1;
再估算一下,因為對稱,所以擴充陣列最大為(99+50+99)*(99+50+99) ~= (250*250)//(其實也可以開更大哈)
寫一個計算加總的函數
然後把原本陣列的每個數字都跑完即可(不過需要注意座標的起點終點同時加(位移))(紀錄座標時也要扣位移)
for(int i = 100; i < 100+n; i++){
for(int j = 100; j < 100+m; j++){...
....
p[ans][0] = i-100;
p[ans][1] = j-100;