題目鏈結
思路:
本人也是剛接觸dp,所以這個題用了兩種方法,但是一種方法當時發現測試資料好像有點水,我自己舉了乙個樣例不對竟然給我ac了 然後又自己改了一下...
像這樣起點位置確定了而末位置不確定的我們從後往前倒著dp,這樣以便確定最優解,
轉移方程為 dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1])); 處理好邊界
#include#define ri(a) scanf("%d", &a)
#define rl(a) scanf("%lld", &a)
#define rf(a) scanf("%lf", &a)
#define rs(a) scanf("%s", a)
#define pi(a) printf("%d\n", (a))
#define pf(a) printf("%lf\n", (a))
#define pl(a) printf("%lld\n", (a))
#define ps(a) printf("%s\n", (a))
#define w(a) while(a--)
#define clr(a, b) memset(a, (b), sizeof(a))
#define mod 100000007
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int dp[maxn][20];
int n,pos,t;
int maxt;
int main()
for(int i=maxt-1;i>=0;i--)
}pi(dp[0][5]);
} return 0;
}
如果從起始位置開始的話需要注意由於剛開始只能從5這個起點開始,需要特別處理一下;
#include#define ri(a) scanf("%d", &a)
#define rl(a) scanf("%lld", &a)
#define rf(a) scanf("%lf", &a)
#define rs(a) scanf("%s", a)
#define pi(a) printf("%d\n", (a))
#define pf(a) printf("%lf\n", (a))
#define pl(a) printf("%lld\n", (a))
#define ps(a) printf("%s\n", (a))
#define w(a) while(a--)
#define clr(a, b) memset(a, (b), sizeof(a))
#define mod 100000007
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int dp[maxn][20];
int n,pos,t;
int maxt;
int main()
for(int i=2;i<=maxt;i++)
}int ans=-1;
for(int i=0;i<=10;i++)
ans=max(ans,dp[maxt][i]);
pi(ans);
} return 0;
}
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馬上卸下身上的揹包去接。但由於...
HDU 1176 免費餡餅 (DP)
problem description 都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於...