【刷题】动态规划——线性DP(数字三角形):摘花生

【刷题】动态规划——线性DP(数字三角形):摘花生_第1张图片

#include 
using namespace std;

const int N = 110;

int t, r, c, m;
int f[N][N], w;

int main() {
	scanf("%d", &t);
	while(t--) {
		scanf("%d%d", &r, &c);

		for(int i = 0; i < r; i++) {
			for(int j = 0; j < c; j++) {
				scanf("%d", &w);
				if (i > 0 && j > 0) {
					f[i][j] = max(f[i-1][j] + w, f[i][j-1] + w);
				}
				else if (i > 0) {
					f[i][j] = f[i-1][j] + w;
				}
				else if (j > 0) {
					f[i][j] = f[i][j-1] + w;
				}
				else {
					f[0][0] = w;
				}
			}
		}
		printf("%d\n", f[r-1][c-1]);
	}
	return 0;
}

你可能感兴趣的:(刷题,动态规划,算法)