時間限制:
1 sec
記憶體限制:
64 mb
考慮在下面被顯示的數字金字塔。 寫乙個程式來計算從最高點開始在底部任意處結束的路徑經過數字的和的最大。每一步可以走到左下方的點也可以到達右下方的點。
在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大和:30
第1行:1個整數r(1<= r<=1000),表示行的數目。
接下來共r行,第i行有i個整數。所有的數均非負的且不大於100。
第1行:可以得到的最大的和。
573 8
8 1 0
2 7 4 4
4 5 2 6 5
30是一道dp的裸題。。也是作為dp複習的開始。
f[i,j]=max+g[i][j](g[i][j]為原位置的值,f[i][j]為自頂而下路徑所得的最大值)
填表法:
#includeint an[1001][1001];
int main()
else an[i][j]+=an[i-1][j];
}t=an[n-1][0];
for(i=1;it)t=an[n-1][i];
printf("%d\n",t);
}
記憶化搜尋:
#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f
#define ll long long int
ll getint()
return ans*f;
}using namespace std;
ll ans[1010][1010],n;
bool s[1010][1010];
ll dfs(int i,int j)
int main()
刷表法:#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f
#define ll long long int
ll getint()
return ans*f;
}using namespace std;
ll ans[1010][1010],n,g[1010][1010];
int main()
printf("%lld\n",ans[1][1]);
}
USACO Training 數字三角形
題目描述 給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5輸入格式 第一行包含整數n,表示數字三角形的層數。接下來n行,每行包含...
USACO TRAINING 奶牛家譜
時間限制 1 sec 記憶體限制 64 mb 提交 53 解決 24 提交 狀態 我的提交 農民約翰準備購買一群新奶牛。在這個新的奶牛群中,每乙個母親奶牛都生兩小奶牛。這些奶牛間的關係可以用二叉樹來表示。這些二叉樹總共有n個節點 3 n 200 這些二叉樹有如下性質 有多少不同的家譜結構?如果乙個家...
USACO TRAINING 子集的和
時間限制 1 sec 記憶體限制 64 mb 對於從1到n 1 n 39 的連續整數集合,能劃分成兩個子集合,且保證每個集合的數字之和是相等的。舉個例子,如果n 3,對於能劃分成兩個子集合,他們每個的所有數字和是相等的 and 這是唯一一種分法 交換集合位置被認為是同一種劃分方案,因此不會增加劃分方...