memset() :C&C++做内存初始化的函数
2022/7/25 5:22:46
本文主要是介绍memset() :C&C++做内存初始化的函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一个例题:求最小生成元
如果一个数x加上x的各位数字的和得到y,就说x是y的生成元。
给出一个n(1<=n<=100000), 求它的最小生成元,无解时输出0。
如:输入 216 输出 198 输入 2005 输出 1979 输入 121 输出 0。
首先从思路上容易想到,我们要找一个数(n)的生成元,
这个生成元毫无疑问比这个数(n)小,
那么我们只需把1到n-1的所有数都枚举一遍找到就break就行,
最后输出相应数据。
但是每求一个n的生成元都要枚举n-1个数(在最糟的情况下),
我们可以换一种思路,把所有可以是生成元的数从1到100000都算出来他们对应的数并且把他们存入一个数组且相应的位置下标即为这个数n。
这样做相当于我们制作了一个生成元的表格,最后只需要查表即可。
#include<cstdio> #include<cstring> #define maxn 100005 int ans[maxn]; int main(){ int T,n; memset(ans,0,sizeof(ans)); for(int m=0;m<maxn;m++){ int x=m,y=m; while(x>0){ y+=x%10; x/=10; } if(ans[y]==0||m<ans[y]){ ans[y]=m; } } scanf("%d",&T); while(T--){ scanf("%d",&n); printf("%d\n",ans[n]); } return 0; }
memset是C++初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
这篇关于memset() :C&C++做内存初始化的函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26MATLAB 中 A(7)=[];什么意思?-icode9专业技术文章分享
- 2024-11-26UniApp 中如何实现使用输入法时保持页面列表不动的效果?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中怎么实现输入法弹出时禁止页面向上滚动?-icode9专业技术文章分享
- 2024-11-26WebSocket是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-26页面有多个ref 要动态传入怎么实现?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中实现一个底部输入框的常见方法有哪些?-icode9专业技术文章分享
- 2024-11-26RocketMQ入门指南:搭建与使用全流程详解
- 2024-11-26RocketMQ入门教程:轻松搭建与使用指南
- 2024-11-26手写RocketMQ:从入门到实践的简单教程
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版