poj1163 数字三角形
本机可以运行,提交就runtime error
#include<iostream>
using namespace std;
int record[105][105];
int idxhelper(int k)
{
return k*(k-1)/2;
}
int dp(int N, int s[])
{
for(int i=1; i<N+1;i++)
{
for(int j=1; j<i+1; j++)
{
record[i][j] = max(record[i-1][j-1], record[i-1][j]) + s[idxhelper(i)+j];
}
}
int temp = record[N][1];
for(int i=2;i<N+1;i++)
{
if(temp < record[N][i])
{
temp = record[N][i];
}
}
return temp;
}
int main()
{
int N;
int s[105];
int n;
while(cin >> N)
{
n = (N+1)*N/2;
memset(s,0,sizeof(s));
memset(record,0,sizeof(record));
for(int i=1;i<n+1;i++)
{
cin >> s[i];
}
cout << dp(N,s) << endl;
}
}