摘自算法设计与实验题解 算法实现题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
阅读(2688) | 评论(0) | 转发(0) |