|
摘自算法设计与实验题解 算法实现题1-4
金币阵列问题 问题描述: 有m*n(m <=100,n <= 100)个金币在桌面上排成一个m行n列的金币阵列。每一枚金币或正面朝上或背面朝上。用数字表示金币状态,0表示金币正面朝上,1表示背面朝上。 金币阵列游戏的规则是: (1)每次可将任一行金币翻过来放在原来的位置上; (2)每次可任选2列,交换这2列金币的位置。 算法设计: 给定金币阵列的初始状态和目标状态,计算按金币游戏规则,将金币阵列从初始状态变换到目标状态所需的最少变换次数。 ==================== 上题分析 ===================== 统计数字问题
考察由0-9组成的n位数,从n个0到n个9,0~9出现的次数都是相同的,容易得知次数为 f(n)=10f(n-1) + 10^(n-1) f(1)=1
then: f(n)=n10^(n-1)
对于给定的总页数P,可以分别对各位数计算,例如P=23456,可以分成几个部分来计算: 0~9999 10000~19999 20000~20999 21000~21999 22000~22999 23000~23099 23100~23199 23200~23299 23300~23399 23400~23409 23410~23419 23420~23429 23430~23439 23440~23449 23450~23456
|