Lenny's Lucky Lotto Lists-DP
update@2011-08-03
for(i = 1;i <= 2000;i++){
int j;
dp[i][1] = i;
for(j = 2;j <= 10 && ((1<<(j-1))) <= i;j++){
int k;
//dp[i][j] = dp[i>>1][j-1]
dp[i][j] = 0;
for(k = i;(k>>1) >= (1<<(j-2));k--){
//dp[k>>1][j-1] + dp[(k-1)>>1][j-1]...... 这样相当于枚举了
dp[i][j] += dp[k>>1][j-1];
}
}
for(;j <= 10;j++)
dp[i][j] = 0;
}
题目链接:Lenny's Lucky Lotto Lists
一道简单的DP题,先DP出所有的结果 然后直接输出。试了下10000的数据 要用3s,题目的数据只有2000 ,应该还有优化的空间