設a[i][j]為第i秒的j位置掉下的餡餅數量,f[i][j]為第i秒在j位置接餡餅最多可以接到的最多餡餅數量。由於每秒只能移動乙個位置,因此這一狀態可能由三種情況達到:
f[i - 1][j - 1]
f[i - 1][j]
f[i - 1][j + 1]
這三種情況中的最大值加上當前位置可以接到的餡餅數即是當前位置可以接到的最大餡餅數量:
f [ i ] [ j ] = max ( f [ i - 1 ] [ j - 1 ] , f [ i - 1 ] [ j ] , f [ i - 1 ] [ j + 1 ] ) + a [ i ] [ j ] ;
。當然,這道題只是二維動態規劃中最簡單的一種罷了。
#include#include#includeusing namespace std;
int f[100005][13];
int a[100005][13];
int max(int a, int b, int c)
if (a < c)
return a;
}int main()
}for (i = 1; i <= 11; i++)
for (i = maxtime - 1; i >= 0; i--)
}printf("%d\n", f[0][6]);
}return 0;
}
#include#include#define max 100001
int pie[max][12];
int dp[max][12];
int n;
int main()
for(i=1;i<=11;i++)
dp[maxtime][i]=pie[maxtime][i];
for(i=maxtime-1;i>=0;i--)
}printf("%d\n",dp[0][6]);
}return 0;
}
HDU 1176 免費餡餅 二維dp
都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...
hdu 1176 免費餡餅 dp
去年暑假的時候就看到這個題了,當時太菜了。完全不知道做。今天看到了網上的hdu dp46題,準備暑假前把這46個題搞了,正好看到了這個免費餡餅,怒a之。狀態轉移方程 dp i j max dp i j max dp i 1 j max dp i 1 j 1 dp i 1 j 1 v i j 其中dp...
HDU1176 免費餡餅 DP
problem description 都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於...