C++二維數組的前綴和的方法很簡單,可以利用公式res[i][j]=arr[i][j]+res[i-1][j]+prefix[i][j-1]-res[i-1][j-1]。
輸入
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
輸出
1 3 6 10
6 14 24 36
15 33 54 78
28 60 96 136
#include<bits/stdc++.h>
using namespace std;
int arr[1005][1005];
int res[1005][1005];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>arr[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){res[i][j]=arr[i][j]+res[i-1][j]+res[i][j-1]-res[i-1][j-1];cout<<res[i][j]<<" ";}cout<<endl;}return 0;
}