数塔问题,很简单,本来不想做了的。后来想想要追求写得最好。
看了一下,过的状态有大神的代码运行时间是0MS。。。
我的是32MS过的。
但是我的内存是216K, 0MS的大神我看到最少的内存是 404K吧,暂时没看到内存开的更少的。
但是0MS的思路真的想知道啊,求大神留代码.
下面是我的代码:
#include<iostream>
using namespace std;
int f[2][110];
int a;
int n;
int Max(int a, int b)
{
return a > b? a : b;
}
int main()
{
while(cin >> n)
{
bool k = 0;
int max = -1;
memset(f, 0, sizeof(f));
for(int i = 1; i <= n; ++i)
{
for(int j = 0; j < i; ++j)
{
cin >> a;
if(j)
f[k][j] = Max(f[k ^ 1][j], f[k ^ 1][j - 1]) + a;
else
f[k][j] = f[k ^ 1][j] + a;
max = max > f[k][j] ? max : f[k][j];
}
k ^= 1;
}
cout << max << endl;
}
return 0;
}