카테고리 없음
부분합 사용하기
fw93
2018. 4. 2. 20:00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | void func3() { vector<vector<int>> tmp = { {1,2,3},{4,5,6},{7,8,9} }; vector<vector<int>> psum(3, vector<int>(3, 0)); psum[0][0] = tmp[0][0]; vector<vector<int>> psumx(3, vector<int>(3, 0)); for (int j = 0; j < 3; j++) { psumx[0][j] = tmp[0][j]; for (int i = 1; i < 3; i++) { psumx[i][j] = psumx[i - 1][j]+tmp[i][j]; } } // make psum for (int i = 0; i < 3; i++) { psum[i][0] = psumx[i][0]; for (int j = 1; j < 3; j++) { psum[i][j] = psum[i][j - 1] + psumx[i][j]; } } // iterate through all members for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = i; k < 3; k++) { for (int l = j; l < 3; l++) { int sum; if (i == 0 && j == 0) { sum = psum[k][l]; } else if (i == 0) { sum = psum[k][l] - psum[k][j - 1]; } else if (j == 0) { sum = psum[k][l] - psum[i - 1][l]; } else { sum = psum[k][l] - psum[i - 1][l] - psum[k][j - 1] + psum[i - 1][j - 1]; } cout << "(" << i << "," << j << ")" << " to " << "(" << k << "," << l << ")" << " sum " << sum << endl; } } } } } void func2() { vector<int> v1 = { 1,2,3,4,5 }; // make psum vector<int> psum(v1.size() + 1, 0); psum[0] = 0; for (int i = 1; i <= v1.size(); i++) { psum[i] = psum[i - 1] + v1[i - 1]; } // find all partial sums for (int i = 0; i < v1.size(); i++) { for (int j = i; j < v1.size(); j++) { cout << "sum of " << i << " " << j << " " << psum[j + 1] - psum[i] << endl; } } // make psum without psum[-1] = 0; psum[0] = v1[0]; for (int i = 1; i < v1.size(); i++) { psum[i] = psum[i - 1] + v1[i]; } // find all partial sums for (int i = 0; i < v1.size(); i++) { for (int j = i; j < v1.size(); j++) { if (i == 0) cout << i << " " << j << " " << psum[j]; else cout << i << " " << j << " " << psum[j] - psum[i - 1]; } } } vector<int> func() { vector<int> v1 = { 1,2,3,4,5 }; return vector<int>(v1.begin(), v1.begin() + 2); } int main() { func3(); while(1){} return 0; } | cs |