哎,一开始没看到从5开始....
后来写懵了,用了queue正推,记录能到达的节点,p[i+1][j] = max(p[i][j],max(p[i][j-1],p[i][j+1]))
嗯,用stl mle了,自己写queue又tle,不知道为什么嚒,好像bfs我从没a过...
看了dicuss的思路,只看到数塔两个字我就懂了...
只能说巧妙了,区间反向确定我确实没想到...
//数塔问题/* t=0 5 t=1 456 t=2 34567 t=3 2345678 t=4 123456789 t=5 0123456789A*/#include#include #include #include #include const int MAXN= 1e5+10;using namespace std;int dp[MAXN][12];int mov[3]={-1,0,1};/*bool isOverBorder(int x){ if(x<0||x>10)return true; else return false;}*/void init(){ for(int i=0;i =0;i--){ dp[i][0] += max(dp[i+1][0],dp[i+1][1]); 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])); } } cout< <