Skip to content

Commit acfc0b5

Browse files
authored
Add files via upload
数位dp
1 parent 13a8217 commit acfc0b5

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* @lc app=leetcode.cn id=600 lang=cpp
3+
*
4+
* [600] 不含连续1的非负整数
5+
*/
6+
#include<bits/stdc++.h>
7+
using namespace std;
8+
// @lc code=start
9+
class Solution {
10+
public:
11+
int solve(int len, int last, int over, vector<vector<vector<int>>>&dp, bitset<32> & dim){
12+
if(len == 32)
13+
return 1;
14+
if(dp[len][last][over] != -1)
15+
return dp[len][last][over];
16+
17+
auto & ans = dp[len][last][over];
18+
ans = 0;
19+
int k = dim[31-len];
20+
int maxx = over ? k : 1 ;
21+
if(last==1)
22+
maxx = 0;
23+
for(int i=0; i<=maxx; ++i){
24+
ans += solve(len + 1, i, over && (i==k), dp, dim);
25+
}
26+
return ans;
27+
}
28+
int findIntegers(int num) {
29+
vector<vector<vector<int> > > dp(32,vector<vector<int>>(2,vector<int>(2,-1)));
30+
bitset<32> dim(num);
31+
32+
// for(int i=0 ; i<32; ++i)
33+
// cout << dim[i] << "\n";
34+
// cout << dim << "\n";
35+
return solve(0, 0,1, dp, dim);
36+
}
37+
};
38+
// @lc code=end
39+

0 commit comments

Comments
 (0)