problem
solution
codes
#include<iostream>
#include<algorithm>
using namespace std;
int n, a[110][110], f[110][110];
int dfs(int i, int j){
if(f[i][j])return f[i][j];
if(i>n || j>n)return 0;
return f[i][j] = max(dfs(i+1,j),dfs(i+1,j+1))+a[i][j];
}
int main(){
cin>>n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= i; j++)
cin>>a[i][j];
cout<<dfs(1,1)<<"
";
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int n, a[110][110], f[110][110];
int main(){
cin>>n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= i; j++)
cin>>a[i][j];
for(int i = n; i >= 1; i--)
for(int j = 1; j <= i; j++)
f[i][j] = max(f[i+1][j], f[i+1][j+1])+a[i][j];
cout<<f[1][1]<<"
";
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int n, a[110][110], f[110][110];
int main(){
cin>>n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= i; j++)
cin>>a[i][j];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= i; j++)
f[i][j] = max(f[i-1][j], f[i-1][j-1])+a[i][j];
int ans = -0xffffff;
for(int i = 1; i <= n; i++)ans = max(ans, f[n][i]);
cout<<ans<<'
';
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int n, a[110][110], f[2][110];
int main(){
cin>>n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= i; j++)
cin>>a[i][j];
for(int i = n; i >= 1; i--)
for(int j = 1; j <= i; j++)
f[i%2][j] = max(f[(i+1)%2][j], f[(i+1)%2][j+1])+a[i][j];
cout<<f[1][1]<<"
";
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int n, a, f[2][110];
int main(){
cin>>n;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= i; j++){
cin>>a;
f[i%2][j] = max(f[(i-1)%2][j], f[(i-1)%2][j-1])+a;
}
}
int ans = -0xffffff;
for(int i = 1; i <= n; i++)ans = max(ans, f[n%2][i]);
cout<<ans<<"
";
return 0;
}