有两个点不太理解,请明白的大佬传授一下:
/*DP主要代码*/ for(int i=0; i<32; i++) { memset(dp[0],NI,sizeof(dp[0]));/*为什么每一次都要把dp[0]初始化为负无穷,只有枚举的状态i是0?*/ dp[0][i]=0; for(int j=1; j<=n; ++j) { for(int s=0; s<32; ++s) { dp[j][s]=mmax(dp[j-1][(s&15)<<1],dp[j-1][(s&15)<<1|1])+num[j][s]; } } if(dp[n][i]>ans) {/*为什么ans在dp[n][i]里面?题解里有人说这里是处理环形DP,但是还是不理解*/ ans=dp[n][i]; } }