
算法设计与实验解析:一本书从1到n自然编号页码的编排规则及实例分析
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本书深入探讨了从1至n自然数编号页码的设计原则和实践案例,结合具体算法进行详细解析,旨在帮助读者掌握高效、系统的页码编排技巧。
在王晓东编著的《算法设计与实验题解》一书中提到了一个数字统计问题:一本书从第1页到第n页按顺序编码,每一页使用最简洁的形式表示(例如6而不是06或006)。该题目要求根据给定的书总页数计算出各个数字在所有页码中出现的次数。对于这个问题,最容易想到的方法是采用复杂度为O(n*log10(n))的算法。
以下是实现这一方法的具体代码:
```c
void statNumber(int n) {
int i, t;
int count[10] = {0};
for(i = 1; i <= n; i++) {
t = i;
while(t) {
count[t % 10]++;
t /= 10;
}
}
for(i = 0; i < 10; i++) {
printf(%d\n, count[i]);
}
}
```
此代码段首先初始化一个包含十个元素的数组`count`,用来记录每个数字出现的次数。然后通过遍历从1到n的所有页码,并对每一个页码进行分析:每次循环中用`t % 10`得到当前位上的数值并增加对应位置计数器中的值;再使用`t /= 10`去掉已经处理过的最低有效位,直到所有数字都被统计完毕。最后输出每个数字出现的次数。
全部评论 (0)
还没有任何评论哟~


