第一范文网 - 专业文章范例文档资料分享平台

经典ACM算法合集经典ACM算法合集

来源:用户分享 时间:2021-06-02 本文由长路漫漫 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

经典ACM算法合集经典ACM算法合集

经典ACM算法合集经典ACM算法合集.txt“我羡慕内些老人羡慕他们手牵手一直走到最后。━交话费的时候,才发现自己的话那么值钱。实验一 统计数字问题
实验二 最大间隙问题
实验三 众数问题
实验四 半数集问题
实验五 集合划分问题
实验六 最少硬币问题
实验七 编辑距离问题
实验八 程序存储问题
实验九 最优服务次序问题
实验十 汽车加油问题
实验十一 工作分配问题
实验十二 0-1背包问题
实验十三 最小重量机器设计问题
实验十四 最小权顶点覆盖问题
实验十五 集合相等问题
实验十六 战车问题
实验一 统计数字问题
1、问题描述:
一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1, 2,…,9。
2、题目分析:
考虑由0,1,2,…,9组成的所有n位数。从n个0到n个9共有个n位数,在这些n位数中,0,1,2,…,9每个数字使用次数相同,设为。
满足如下递归式:

由此可知,。
据此,可从低位向高位进行统计,再减去多余的0的个数即可。
3、算法设计:
定义数组a[10]存放0到9这10个数出现的次数,个位为第0位,第j位的数字为r。采用while循环从低位向高位统计:
a. 统计从个位算起前j位0~9个数;
b. 如果j+1位为0,去掉第j+1位补0个数;
c. 统计第j+1位出现1~(r-1)个数;
d. 统计第j+1位出现r个数。
4、源程序:

#include <iostream.h>
int main()
{
long int sn[10];
int i,n,c,k,s,pown;
for(i=0;i<10;i++)
sn[i]=0;
cin>>n;
for(k=s=0,pown=1;n>0;k++,n/=10,pown*=10)
{
c=n%10;
for(i=0;i<10;i++)
sn[i]+=c*k*(pown/10);
for(i=0;i<c;i++)
sn[i]+=pown;
sn[c]+=1+s;
sn[0] -=pown;
s+=c*pown;
}
for(i=0;i<10;i++)
cout<<sn[i]<<'\n';
}

5、算法分析:
函数count()的复杂度为O(1),主函数调用count(),故该算法的时间复杂度为O(1)。
实验二 最大间隙问题

1、问题描述:
最大间隙问题:给定n 个实数x1 ,
x2 ,... , xn,求这n 个数在实轴上相邻2 个数之间的最大差值。假设对任何实数的下取整函数耗时O(1),设计解最大间隙问题的线性时间算法。 对于给定的n 个实数x1 , x2 ,... , xn,编程计算它们的最大间隙。

2、题目分析:
考虑到实数在实轴上按大小顺序排列

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科经典ACM算法合集经典ACM算法合集全文阅读和word下载服务。

经典ACM算法合集经典ACM算法合集.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1198539.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top