#define _clr(x) memset(x,0xff,sizeof(int)*n) 是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#define _clr(x) memset(x,0xff,sizeof(int)*n) 是啥意思?相关的知识,希望对你有一定的参考价值。

如题!谢谢!
sizeof(int)*n 主要是这个 sizeof(int)我知道 后面的*n 是什么意思
如果是乘n的意思 那么n是什么?

在程序中将_clr(x) 全部用memset(x,0xff,sizeof(int)*n)代替
,memset(x,0xff,sizeof(int)*n)是_clr(x)展开后的样子。这是个宏定义而已。
memset的函数原型是: void *memset(void *s, char ch, unsigned n);
n是一个无符号整数,sizeof(int)是int的字节数,*n就是和n相乘。memset是将由参数一指定位置的内存置为第二个参数指定的ascii码,长度由第三个参数决定
程序写全点,不知道n是否是定义过的常量
参考技术A 宏定义

AcWing 126. 最大的和

很经典的题。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define pb push_back
#define fi first
#define se second
#define mem(a,x) memset(a,x,sizeof(a));
#define db double 
#define fir(i,a,n) for(int i=a;i<=n;i++)
//======================
//参考:https://www.acwing.com/solution/content/4127/ 
const int N=105;
int a[N][N],s[N][N];
int n;
int ans=-0x3f3f3f3f;
int main()
{
	cin>>n;
	fir(i,1,n)
	{
		fir(j,1,n)
		{
			cin>>a[i][j];
			a[i][j]+=a[i-1][j];//这一列的前缀和 
		} 
	}
	
	//枚举边界
	fir(i,1,n)
	{
		fir(j,i,n)//枚举排,两排之间 
		{
			int t=0;
			fir(k,1,n)//列 
			{
				t=max(t,0)+a[j][k]-a[i-1][k];//如果上一个t是负数,就不带它 
				ans=max(ans,t);
			}
		}
	} 
	cout<<ans;
	return 0; 
}

以上是关于#define _clr(x) memset(x,0xff,sizeof(int)*n) 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

宏字符串:#define __T(x) x 是啥意思?和 __T(#x)?

32位系统调用表入口点如何映射到x86_64中的SYSCALL_DEFINE

为什么X509_CRL_verify()失败?

AcWing 126. 最大的和

给树染色 贪心+树的结点合并

Linux 下select 网络模型