memset初始化数组最大化,最小化 (含long long)

本文介绍了在C++和C语言中使用memset函数初始化数组,特别是针对int和long long类型数组如何设置最大值和最小值的情况。文中通过实例展示了memset在Dijkstra算法等场景的应用,并提供了实际运行结果作为参考。
部署运行你感兴趣的模型镜像

背景:做题时时常有需要初始化数组,像Dijkstra算法求最短路径,需要初始化数组为无穷大等等

这里简单整理一些memset 对int 数组常用的初始化方法和对long long 数组的最大化(信息学奥赛一本通P462 有关章节) 并给出运行结果

#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

int main()
{
	int a[101][101];
	memset(a,0x7f,sizeof(a));  //初始最大化
	//tips:也常用0x3f 或0x7fffffff
	cout<<a[1][1]<<endl;  
	memset(a,0,sizeof(a));  //初始化为0 
	cout<<a[1][1]<<endl;
	memset(a,0xaf,sizeof(a));  //初始最小化
	cout<<a[1][1]<<endl;
   
   cout<<endl;
   
   long long b[101][101];
   memset(b,127,sizeof(b));  //初始最大化
   cout<<b[1][1]<<endl;
   memset(b,0,sizeof(b)); //初始化为0  
   cout<<b[1][1]<<endl;
   
	return 0;
 } 

运行结果如图:
(最大化最小化只是相对而言,看自己所需)
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 使用C++静态数组实现垃圾投放最小费用的算法 为了实现垃圾投放最小费用的计算,可以采用一种贪心策略:先尝试将每类垃圾尽可能多地投入对应的有限容量垃圾桶中,超出部分则投至无限容量但需付费的最后一个桶。以下是具体实现方案。 #### 静态数组定义 在C++中,使用固定大小的静态数组代替动态分配内存的方式能够提高性能并减少运行时错误风险。这里我们预先声明足够大的数组来存储各变量值。 #### 算法步骤说明 1. 初始化三个静态数组分别保存各类垃圾的数量、对应垃圾桶的最大承载量以及最后那个特殊收费桶的单次操作费。 2. 计算每个类别实际能放进专属桶里的数量,并累加剩余未处理的部分到总额外开销里去。 3. 输出最终结果即总的附加成本。 下面给出完整的程序清单: ```cpp #include <iostream> #define MAX_N 1000000 // 设定最大可能的N值 [^1] // 全局静态数组用于储存数据 static long long r[MAX_N]; // 各类垃圾桶容量 static long long a[MAX_N]; // 各类垃圾数目 long long c; // 收费标准 void init() { memset(r, 0, sizeof(long long)*MAX_N); memset(a, 0, sizeof(long long)*MAX_N); } int main(){ int n; std::cin >> n >> c; for(int i=0;i<n;++i){ std::cin>>r[i]; } for(int i=0;i<n;++i){ std::cin>>a[i]; } long long cost =0 ; for(int i=0;i<n && a[i]>r[i];++i){ cost +=(a[i]-r[i])*c; } std::cout<<cost<<"\n"; return 0; } ``` 此版本利用了全局静态数组以简化指针管理和释放过程,同时保持高效访问速度。注意这里的`memset()`函数是用来清零整个数组的内容以便后续安全读取未经初始化的位置。 --- ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值