题目:
MIMA:ACM7114一开始把这个题想复杂了,想把前六层和后面的分开,后来发现对结果没什么影响,于是ok了。
只要推出这个公式即可 dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1]));#include#include using namespace std;#include int dp[100005][15];int main(){ int n; while(~scanf("%d",&n)&&n) { memset(dp,0,sizeof(dp)); int maxx=-1; for(int u=0;u =0;i--) { for(int j=1;j<=11;j++) { dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1])); } } printf("%d\n",dp[0][6]); } return 0;}