博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

水龙卷

我是一个对自己进行debug的程序,所以行动迟缓些,不要见怪
  waterspout.cublog.cn

关于作者
姓名:何云龙
职业:Linux移动终端平台开发
介绍:走的更远些
|| << >> ||
我的分类


每日一题 - 金币阵列问题
摘自算法设计与实验题解 算法实现题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



发表于: 2008-05-14,修改于: 2008-05-14 16:58,已浏览104次,有评论0条 推荐 投诉


网友评论
 发表评论