关于数位DP的一些思考

题目:https://leetcode-cn.com/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof 

输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。

例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,一共出现了5次。

int nums[20];
int dp[20][2][20];
//pos表示当前位置,从最高位开始处理
//s表示在之前的pos,数位有无小于最高上限
//ok表示当前状态下1的个数
int dfs(int pos, int s, int ok) {
	if (pos < 0)
		return ok;
	if (dp[pos][s][ok] != -1)
		return dp[pos][s][ok];

	int up = s ? 9 : nums[pos];
	int ans = 0;
	for (int i = 0; i <= up; i++)
		ans += dfs(pos - 1, s || i < up, ok + (i == 1));
	dp[pos][s][ok] = ans;
	return ans;
}
int solve(int n) {
	memset(dp, -1, sizeof(dp));
	int i = 0;
	for (; n; i++) {
		nums[i] = n % 10;
		n /= 10;
	}
	return dfs(i - 1, 0, 0);
}
int countDigitOne(int n) {
	return solve(n);
}

完全可以将题目改变,例如改为:

输入一个整数 n ,求1~n这n个整数的十进制表示中出现1的数字个数

例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,一共4个数字出现了1

int nums[20];
int dp[20][2][2];
//pos表示当前位置,从最高位开始处理
//s表示在之前的pos,数位有无小于最高上限
//ok表示当前状态下,是否出现过1
int dfs(int pos, int s, int ok) {
	if (pos < 0)
		return ok;
	if (dp[pos][s][ok] != -1)  
		return dp[pos][s][ok];
 
	int up = s ? 9 : nums[pos];
	int ans = 0;
	for (int i = 0; i <= up; i++) 
		ans += dfs(pos - 1, s || i < up, ok || (i == 1));
	dp[pos][s][2] = ans;
	return ans;
}
int solve(int n) {
	memset(dp, -1, sizeof(dp));
	int i = 0;
	for (; n; i++) {
		nums[i] = n % 10;
		n /= 10;
	}
	return dfs(i - 1, 0, 0);
}
int countDigitOne(int n) {
	return solve(n);
}

 

内容概要:本文详细介绍了基于结构不变补偿的电液伺服系统低阶线性主动干扰抑制控制(ADRC)方法的实现过程。首先定义了电液伺服系统的基本参数,并实现了结构不变补偿(SIC)函数,通过补偿非线性项和干扰,将原始系统转化为一阶积分链结构。接着,设计了低阶线性ADRC控制器,包含扩展状态观测器(ESO)和控制律,用于估计系统状态和总干扰,并实现简单有效的控制。文章还展示了系统仿真与对比实验,对比了低阶ADRC与传统PID控制器的性能,证明了ADRC在处理系统非线性和外部干扰方面的优越性。此外,文章深入分析了参数调整与稳定性,提出了频域稳定性分析和b0参数调整方法,确保系统在参数不确定性下的鲁棒稳定性。最后,文章通过综合实验验证了该方法的有效性,并提供了参数敏感性分析和工程实用性指导。 适合人群:具备一定自动化控制基础,特别是对电液伺服系统和主动干扰抑制控制感兴趣的科研人员和工程师。 使用场景及目标:①理解电液伺服系统的建模与控制方法;②掌握低阶线性ADRC的设计原理和实现步骤;③学习如何通过结构不变补偿简化复杂系统的控制设计;④进行系统仿真与实验验证,评估不同控制方法的性能;⑤掌握参数调整与稳定性分析技巧,确保控制系统在实际应用中的可靠性和鲁棒性。 阅读建议:本文内容详尽,涉及多个控制理论和技术细节。读者应首先理解电液伺服系统的基本原理和ADRC的核心思想,然后逐步深入学习SIC补偿、ESO设计、控制律实现等内容。同时,结合提供的代码示例进行实践操作,通过调整参数和运行仿真,加深对理论的理解。对于希望进一步探索的读者,可以关注文中提到的高级话题,如频域稳定性分析、参数敏感性分析等,以提升对系统的全面掌控能力。
<think>好的,用户想了解三位11脚数码管的引脚图以及如何用万用表检测好坏。首先,我需要回忆一下三位数码管的结构。三位11脚数码管通常指的是三个数字共用一个公共端,每个数字有7个段码(a-g)加上可能的小数点,所以引脚数通常是10或12,但用户提到的是11脚,可能需要确认是否存在特殊情况,比如可能有一个公共端用于多个位或者某些引脚复用。 接下来,引脚图的确定可能需要参考常见型号,例如常见的三位共阳或共阴数码管。假设是共阳型,那么每个数字的公共端可能分别是三个引脚,剩下的8个引脚对应段码,但这样是11脚的话,可能其中一位的公共端与其他两位不同,或者小数点使用了一个引脚。不过更常见的是三位四合一(例如0.36英寸)的数码管,可能有12个引脚,但用户提到的是11脚,可能存在一个引脚未连接或作为小数点。需要确认具体型号,但用户可能没有给出,所以需要一般性指导。 然后,如何用万用表测量好坏。如果是共阳型,公共端接正极,段码接负极会点亮对应的段。万用表可以使用二极管档,红表笔接公共端(假设共阳),黑表笔依次接触各段引脚,观察是否点亮。如果某个段不亮,可能损坏。对于共阴型则相反。但需要先确定数码管类型,共阳还是共阴,可能需要先测试。 用户可能遇到的问题包括如何识别引脚排列,如何区分共阳共阴,以及如何逐一测试每个段和位。需要分步骤说明,确保安全,避免过电流损坏数码管,比如建议使用限流电阻或万用表的低电流档。 现在需要组织步骤:首先确定数码管类型,然后识别公共端和段码引脚,接着用万用表逐个测试。同时,可能需要提供引脚图的典型示例,但由于实际型号不同,只能给出一般方法,比如使用万用表找出公共端,然后映射段码。 可能用户是电子爱好者或维修人员,需要实际动手操作,所以步骤要详细,避免遗漏关键点,比如区分位选和段选,防止误判好坏。同时提醒用户注意引脚排列可能因型号而异,最好查阅手册,若无,则通过测试确定。 总结思考流程:先解释三位11脚的可能结构,然后分步骤测试类型、引脚排列,最后检测各段好坏。确保用户能按步骤操作,即使没有型号信息也能进行基本检测。</think>### 三位11脚数码管引脚图与测量方法 #### 一、三位11脚数码管引脚图(通用说明) 三位11脚数码管通常为**共阳型**或**共阴型**,包含3个位选引脚(控制显示哪一位)和8个段码引脚(a-g + 小数点dp)。11脚的设计可能存在以下两种形式: 1. **引脚复用型**:某一位的公共端与其他引脚共用。 2. **简化设计**:省略小数点或复用部分段码。 **典型引脚排列示例**(以共阳型为例): ``` 引脚1-3:位选(COM1, COM2, COM3) 引脚4-11:段码(a, b, c, d, e, f, g, dp) ``` #### 二、用万用表测量数码管好坏(分步操作) ##### 1. 判断数码管类型(共阳/共阴) - **工具**:万用表调至**二极管档**。 - **步骤**: 1. 任意选一脚作为假设的**公共端**(如引脚1)。 2. 红表笔接假设公共端,黑表笔依次触碰其他引脚。 3. 若某次触碰时某段发光,则为**共阳型**(公共端为阳极)。 4. 若未亮,交换表笔重复测试(黑表笔接公共端,红表笔触碰其他脚),若发光则为**共阴型**。 ##### 2. 定位公共端(位选引脚) - **方法**: - 若为共阳型:位选引脚接**正极**时对应位可点亮。 - 若为共阴型:位选引脚接**负极**时对应位可点亮。 - **操作**: 1. 固定红表笔(共阳)或黑表笔(共阴)在已确定的公共端。 2. 逐一测试其他引脚,记录可点亮的段码,反向推导位选引脚。 ##### 3. 测试段码完整性 - **步骤**: 1. 确认公共端后,依次点亮每个段(a-g, dp)。 2. **共阳型**:红表笔接公共端,黑表笔触碰段码引脚。 3. **共阴型**:黑表笔接公共端,红表笔触碰段码引脚。 4. 观察对应段是否发光均匀,无暗区或闪烁。 ##### 4. 验证三位独立性 - **操作**: 1. 分别对每个位选引脚(COM1, COM2, COM3)重复上述段码测试。 2. 确保每位均可独立控制所有段码。 #### 三、注意事项 1. **限流保护**:万用表二极管档电流较小,可直接测试。若用外部电源,需串联**100-330Ω电阻**。 2. **引脚差异**:实际引脚排列可能因型号不同,建议优先查阅手册。 3. **故障判断**: - 某段完全不亮:段码损坏。 - 多位同时亮:位选引脚短路。 - 显示暗淡:老化或接触不良。 #### 四、总结流程图 ``` 确定类型 → 定位公共端 → 测试各段 → 验证三位 ``` 通过以上步骤,可系统化排除数码管故障,准确判断其好坏。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值