Chinaunix首页 | 论坛 | 博客
  • 博客访问: 503293
  • 博文数量: 35
  • 博客积分: 3472
  • 博客等级: 中校
  • 技术积分: 935
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-04 06:54
文章分类
文章存档

2014年(4)

2013年(2)

2011年(3)

2010年(9)

2009年(9)

2008年(8)

分类: 其他平台

2008-05-14 16:58:58

摘自算法设计与实验题解 算法实现题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



阅读(2631) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~