思路:
二維動態規劃,用二維陣列sum[i][j]表示在第i秒時在j位置處所能接到的最大的餡餅數,a[i][j]表示第i秒時在j位置處所下落的餡餅數,則sum[i][j]的狀態由sum[i-1][j+1]和sum[i-1][j]和sum[i-1][j-1]決定,即:sum[i][j]=max(max(sum[i-1][j],sum[i-1][j+1]),sum[i-1][j-1])+a[i][j];
最終對每個位置的時間狀態為最後時間進行比較,找出最大值。
**如下:
#include #include #include #include using namespace std;
int a[100010][12];
int sum[100010][12];
int main()
sum[1][4]=a[1][4];
sum[1][5]=a[1][5];
sum[1][6]=a[1][6];
for(int i=2;i<=maxn;i++)
}int ans=-1;
for(int i=0;i<11;i++)
ans=max(ans,sum[maxn][i]);
printf("%d\n",ans);
}return 0;
}
動態規劃 免費餡餅
由數塔引出。數塔 處於乙個端點,每次可以選擇向左或向右。而每次選擇,取決於,向左能夠得到最大值,還是向右能得到最大值。當到達數塔倒數第二行時,向左還是向右,僅僅取決於,向左的端點數值大還是向右的大。自頂向下思考,自底向上計算。將數塔傾斜,用i,j表示在數塔中位置,dp i j 則表示在為位置 i j...
動態規劃 免費餡餅
都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...
SDUT 免費餡餅 動態規劃
time limit 1000 ms memory limit 32768 kib submit statistic problem description 都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不...