第十六周 Leetcode 600. Non-negative Integers without Consecutive Ones(HARD) 计数dp

Leetcode600

很简单的一道计数题 给定整数n 求不大于n的正整数中 二进制表示没有连续的1的数字个数

在dp过程中只要保证不出现连续1以及大于n的情况即可。

所以设计按位dp[i][j]表示到第i位 j=0表示第i位为0 且值等于n的情况 2为值小于n的情况

                j=1表示第i位为1 且值等于n的情况 3为值小于n的情况

转移方程很简单 看代码吧 这道题应该是Mid难度吧

class Solution {
public:
    int findIntegers(int num) {
        int va=num;
        int dp[40][4];
        int f[40];memset(f,0,sizeof(f));
        memset(dp,0,sizeof(dp));
        int tot=31;
        while(va>0)
        	{
        	 if((va%2)==1)f[tot]=1;
        	 tot--;
        	 va=(va>>1);
			}

		if(f[tot+1])dp[tot+1][1]=dp[tot+1][2]=1;
			else dp[tot+1][0]=1;
		for(int i=tot+2;i<=31;i++)
			{
			 if(f[i])
			 	{
			 	 dp[i][1]+=dp[i-1][0];
			 	 dp[i][2]+=dp[i-1][0]+dp[i-1][2]+dp[i-1][1]+dp[i-1][3];
			 	 dp[i][3]+=dp[i-1][2];
				}else
					{
					 dp[i][3]+=dp[i-1][2];
					 dp[i][0]+=dp[i-1][0]+dp[i-1][1];
					 dp[i][2]+=dp[i-1][2]+dp[i-1][3];
					}
			}
	 return dp[31][0]+dp[31][1]+dp[31][2]+dp[31][3];
    }
};

  

时间: 2024-11-07 13:27:08

第十六周 Leetcode 600. Non-negative Integers without Consecutive Ones(HARD) 计数dp的相关文章

第十六周学习进度表

时间 第十六周 所花时间 10个小时左右 代码量 300行左右 博客量 1篇 了解到的知识点 网页版的显示作业

第十六周进度表

第十六周进度表 所花时间(包括上课) 10 代码量(行) 853 博客量(篇) 1 了解到的知识点 了解了有关Android开发的知识 了解了页面跳转功能的实现 了解了绩效管理和项目总结的知识

每周进度条(第十六周)

第十六周进度条   第十六周 所花时间 3h 代码量(行)  200 博客量(篇)  1 学到的知识 Android之间页面的切换 创建动态表格

第十六周学习进度

第十六周 所花时间 3h 代码量 230 博客量 1 了解到的知识点 jsp javabean的编写数据库连接操作 swing 美化页面 jsp设计表格

学习进度条(十六周)

本周主要是对于团队开发项目的修改完善.   第十六周 所花时间(包括上课) 上课2小时,课后10小时 代码量(行) 300+ 博客量 3 了解到的知识点 服务器修改数据库表结构

第十六周进度条

第十六周 所花时间(包括上课) 21小时(上课2小时,读书3,整理文档10小时,编程5,写博客1) 代码量(行) 900行 博客量(篇) 1篇 了解到的知识点 对word文档的文字进行操作,知道了更多的知识 知道了如何往应用商店上发布软件

第十六周进度

时间段 第十六周 所花时间 32小时 代码量 602行 博客量 0篇 了解到的知识点 android开发中Fragment的基本使用方法 DrawLayout的使用方法

学习进度表_十六周

  第十六周 所花时间    3小时 代码量 200行 博客数 1 了解到的知识点 将之前的所掌握内容整合

201671010140. 2016-2017-2 《Java程序设计》java学习第十六周

java学习第十六周         本周对十三章:"部署java应用程序"进行了课堂学习,在老师思路牵引下,对这一章知识进行学习,对实例程序运行和注释,对比课前对书本上知识的浅显预习,半知半解,课堂学习后,对这部分知识的理解也更加深入,尤其是在JAR文件这部分,感觉掌握的不错,对Java程序为何要打包成JAR文件,如何去做都有了进一步学习,认知,之前并不理解如何使用jar程序制作JAR文件,在课堂上同学的演示下,也理解了这部分知识.在对JAR文件中的包的密封,属性映射等方面的知识掌握