剑指offer_2020_9_10

剑指 Offer 13. 机器人的运动范围(dfs)

class Solution {
public:
bool visited[101][101]={false};    
int movingCount(int m, int n, int k) {           return dfs(0,0,m,n,k);    }    
int dfs(int x,int y,int m,int n,int k)    {        
if(x>m-1||y>n-1||visited[x][y]||(x%10+x/10+y%10+y/10)>k)        return 0;        visited[x][y]=true;        
return 1+dfs(x+1,y,m,n,k)+dfs(x,y+1,m,n,k);    }};

剑指 Offer 14- I. 剪绳子

class Solution {public:    
int cuttingRope(int n) {    
if(n==1)    return 0;    
if(n==2)    return 1;    
if(n==3)    return 2;   
vector<int>dp(n+1);   dp[0]=0;   dp[1]=1;   dp[2]=2;   dp[3]=3;   
int max=0;   
for(int i=4;i<=n;i++)   {       max=0;       
for(int j=1;j<=i/2;j++)       {           int d=dp[j]*dp[i-j];           if(d>max)           {               max=d;           }       }       dp[i]=max;   }   max=dp[n];   return max;    }};

剑指 Offer 14- II. 剪绳子 II(取模不能用dp)

class Solution {public:    
int cuttingRope(int n) {     if(n==2)     return 1;     if(n==3)     return 2;     long long res=1;     while(n>4)     {         res*=3;         res=res%1000000007;         n-=3;     }     return (int)(res*n%1000000007);    }};

剑指 Offer 15. 二进制中1的个数

class Solution {
public:    
int hammingWeight(uint32_t n) {        
int cnt=0;       
 for(int i=0;i<32;i++)        {            
 if((n>>i)&0x00000001)            cnt++;        }        return cnt;    }};

剑指 Offer 16. 数值的整数次方(快速幂)

class Solution {public:    
double myPow(double x, int n) {         
double res=1;         
int t=n;         
while(n)         {             if(n&1)res*=x;             x*=x;             n/=2;         }         return t>0?res:1.0/res;    }};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值