백준 9465 c
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
int table[2][100001];
int dp[2][100001];
void input_table(int n)
{
int j;
for (j = 1; j <= n; j++)
{
scanf("%d", &table[0][j]);
}
for (j = 1; j <= n; j++)
{
scanf("%d", &table[1][j]);
}
return;
}
int max(int A, int B)
{
if (A >= B)
{
return A;
}
else
{
return B;
}
}
int find_dp(int n)
{
int i, result;
dp[0][0] = dp[1][0] = 0;
dp[0][1] = table[0][1];
dp[1][1] = table[1][1];
for (i = 2; i <= n; i++)
{
dp[0][i] = max(dp[1][i-1], dp[1][i-2]) + table[0][i];
dp[1][i] = max(dp[0][i-1], dp[0][i-2]) + table[1][i];
}
/*for (i = 0; i <= n; i++)
{
printf("%d ", dp[0][i]);
}
printf("\n");
for (i = 0; i <= n; i++)
{
printf("%d ", dp[1][i]);
}
printf("\n");*/
result = max(dp[0][n], dp[1][n]);
return result;
}
int main(void)
{
int T, i, n;
scanf("%d", &T);
for (i = 0; i < T; i++)
{
scanf("%d", &n);
input_table(n);
printf("%d\n", find_dp(n));
}
return 0;
}