sizeof

CF集萃1

早过忘川 提交于 2020-03-17 13:41:22
因为cf上一堆水题,每个单独开一篇博客感觉不太好,就直接放一起好了。 CF1096D Easy Problem 给定字符串,每个位置删除要代价。求最小代价使之不含子序列"hard"。 设f[i][f]表示前i个删到只匹配f位子序列的最小代价。转移看代码吧。O(n) 1 #include <bits/stdc++.h> 2 3 typedef long long LL; 4 const int N = 100010; 5 6 int a[N]; 7 LL f[N][5]; 8 char str[N]; 9 10 int main() { 11 int n; 12 scanf("%d", &n); 13 scanf("%s", str + 1); 14 for(int i = 1; i <= n; i++) scanf("%d", &a[i]); 15 16 int tag = 0; 17 for(int i = 1; i <= n; i++) { 18 if(tag == 0 && str[i] == 'h') tag++; 19 if(tag == 1 && str[i] == 'a') tag++; 20 if(tag == 2 && str[i] == 'r') tag++; 21 if(tag == 3 && str[i] == 'd') tag++; 22 } 23 if

将DCM文件保存成BMP文件或数据流

徘徊边缘 提交于 2020-03-17 06:19:18
DCMTK开源库的学习笔记1:将DCM文件保存成BMP文件或数据流(即数组) DCMTK开源库介绍: DCMTK是目前最全面实现DICOM3.0标准的开源库,通过结合DCMTK开源库和CxImage图像开源库,能够很方便的开发属于自己的DCM文件编辑浏览软件。 DCMTK与CxImage的结合: 下面记录”DCM文件到BMP文件格式的转换“的学习和探索的过程。 1)BMP文件的格式这里不细讲(可自行参阅MSDN相关资料)。BMP属于设备无关图(DIB),内存中只要依次包含BMP文件头(BITMAPFILEHEADER)、BMP信息头(BITMAPINFOHEADER)、调色板(Palette),以及真实像素信息,就可以在所有显示设备中进行显示。因此将DCM文件转换到BMP格式的主要工作是:从DCM众多数据元中挑选出BMP文件头、信息头所必须的信息(如图像宽度、图像高度、每个像素所占的空间、像素数据等)。 2)此次采用了dcmtk中的dcmimgle开发包,利用DicomImage类提供的createWindowsDIB接口以及writeBMP来进行格式转化。具体代码如下: DcmFileFormat *mImage=new DcmFileFormat(); DJDecoderRegistration::registerCodecs(); // register JPEG

c语言变长数组

北慕城南 提交于 2020-03-17 02:33:08
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> #include <time.h> #include <unistd.h> typedef struct score_s{ char name[20]; int scores[0]; }score; int main() { score *scoreInfo = malloc(sizeof(score) + sizeof(int) * 3); strcpy(scoreInfo->name, "guanxianseng"); scoreInfo->scores[0] = 100; scoreInfo->scores[1] = 110; scoreInfo->scores[2] = 120; printf("name:%s\n", scoreInfo->name); for (int i = 0; i < 3; i++) { printf("score:%d\t", scoreInfo->scores[i]); } printf("\n"); return 0; } 来源: https://www.cnblogs.com/luckygxf/p/12508226.html

strlen()和sizeof的区别

对着背影说爱祢 提交于 2020-03-17 01:55:25
某厂面试归来,发现自己落伍了!>>> 比如:char name[40] = "dadawa"; sizeof name = 40;而 strlen (name) = 6;sizeof计算的整个分配的内存单元大小,而strlen只计算实际的字符占的大小,切不包括‘\0’结束符。 int n;sizeof n;或者 sizeof (n);但是sizeof (int)是必须的; 此外size_t 是可以用来定义变量的一种新类型,他是用typedf定义的,用来定义专门存储 一种类型的最大字节大小 的; 来源: oschina 链接: https://my.oschina.net/u/2423028/blog/484182

sizeof 和strlen的区别

自作多情 提交于 2020-03-17 01:48:09
某厂面试归来,发现自己落伍了!>>> 1. 编译时计算运算符sizeof,可用类型或变量做参数,计算占用内存的大小。sizeof后若是类型必须加括弧,若是变量名可不加括弧。sizeof(x)可用来定义数组维数。如:printf("%d\n", sizeof(short));输出的结果为短整型的长度2。用结构类型或变量做参数时,sizeof 返回实际的大小,当用于静态数组时,sizeof 返回全部数组的尺寸。sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸 2. 运行时计算strlen,只能用char*做参数,且必须是以''\0''结尾的。计算的是字符串的长度。如:char str[20]="0123456789"; int a=strlen(str); 结果为a=10; 而int b=sizeof(str); 结果b=20; 3. 处理静态数组: char str[20]="0123456789"; int a=strlen(str); /*a=10; strlen 计算字符串的长度,以\0'为字符串结束标记。 int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响。 4. 处理指针: char* ss = "0123456789"; sizeof(ss) 结果4

第三次作业

孤街浪徒 提交于 2020-03-16 08:58:10
一.观看了字符串操作,单字符串输入输出,字符串数组。 二.练习 三.问题 1.malloc如何控制申请空间的大小? x=(struct node *) malloc(sizeof(struct node)) sizeof(struct node) //struct node占用的字节数。 malloc(sizeof(struct node)) //struct node占用字节数大小的空间 (struct node *) malloc(sizeof(struct node)) //将申请的空间的地址强制转化为 struct node * 指针类型 x=(struct node *) malloc(sizeof(struct node)) //将那个强制转化的地址赋值给 x 2.字符串数组 解决:把字符串数组看成二维字符数组 3.PTA 问题 1-2 执行语句int *p=1000;后,指针变量p指向地址为1000的变量。 (1分) F int *p=1000,是p的地址成为1000. 1-6 关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相同类型的指针可以相加、相减。 (2分) F 2.程序填空 #include <stdio.h> void find(int *, int, int *, int *); int main(void) { int

c

假装没事ソ 提交于 2020-03-16 04:51:57
手写笔记 代码列表 malloc如何控制申请空间的大小? x=(struct node *) malloc(sizeof(struct node)) sizeof(struct node) //struct node占用的字节数。 malloc(sizeof(struct node)) //struct node占用字节数大小的空间 (struct node *) malloc(sizeof(struct node)) //将申请的空间的地址强制转化为 struct node * 指针类型 x=(struct node *) malloc(sizeof(struct node)) //将那个强制转化的地址赋值给 x 来源: https://www.cnblogs.com/minato-aqua/p/12501584.html

高精度加减乘除法

ぃ、小莉子 提交于 2020-03-16 04:11:15
百练2981 http://poj.grids.cn/practice/2981/ View Code 1 #include<stdio.h> 2 #include<string.h> 3 int num[301]; 4 int main() 5 { 6 int i,j,f = 0,f1; 7 char c1[201],c2[201]; 8 gets(c1); 9 gets(c2); 10 i = strlen(c1)-1; 11 j = strlen(c2)-1; 12 int g = 0; 13 while(i>=0&&j>=0) 14 { 15 g++; 16 if(c1[i]-'0'+c2[j]-'0'+num[g]>9) 17 { 18 num[g+1] += (c1[i]-'0'+c2[j]-'0'+num[g])/10; 19 num[g] = (c1[i]-'0'+c2[j]-'0'+num[g])%10; 20 f1 = 0; 21 } 22 else 23 num[g] += c1[i]-'0'+c2[j]-'0'; 24 i--;j--; 25 } 26 while(i>=0) 27 { 28 g++; 29 if(num[g]+c1[i]-'0'>9) 30 { 31 num[g+1] += (num[g]+c1[i]-'0')/10; 32 num[g]

C语言字符串

本秂侑毒 提交于 2020-03-15 18:00:54
目录 一、字符串的概念 二、占用内存的情况 三、字符串的初始化 四、字符串与指针 五、字符串的结尾标志 六、字符串的输出 七、字符串越界 八、字符串常用的库函数 1、获取字符串的长度(strlen) 2、字符串复制或赋值(strcpy) 3、字符串复制或赋值(strncpy) 4、字符串拼接(strcat) 5、字符串拼接(strncat) 6、字符串比较(strcmp、strncmp) 7、字符查找(strchr、strrchr) 8、字符串查找(strstr) 九、应用经验 1、留有余地 2、变量初始化 3、位置(地址)偏移的用法 4、不要在子函数中对字符指针用sizeof 十、课后作业 十一、版权声明 在很多教程中,字符串不过是一个以0结束的字符数组,但是,在我看来,字符串虽然不是C语言基本数据类型,但它比任何数据类型都重要,因为字符串是最常用的数据。 一、字符串的概念 我们可以把字符串储存在char类型的数组中,如果char类型的数组末尾包含一个表示字符串末尾的空字符\0,则该数组中的内容就构成了一个字符串。 因为字符串需要用\0结尾,所以在定义字符串的时候,字符数组的长度要预留多一个字节用来存放\0,\0就是数字0。这是约定。 char strname[21]; // 定义一个最多存放20个英文字符或十个中文的字符串 字符串也可以存放中文和全角的标点符号

C/C++中如何获取数组的长度?

删除回忆录丶 提交于 2020-03-15 11:06:31
C/C++中如何获取数组的长度? 收藏 C、C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中则可以使用模板 技术定义一个函数,比如: template <class T> int getArrayLen(T& array) { return (sizeof(array) / sizeof(array[0])); } 这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。以下是两个Demo程序,一个C语言的,一个C++的: P.S:若数组为存储 字符串的字符数组,则所求得的长度还需要减一,即对于宏定义: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]) - 1 );} ,对于函数定义: template <class T> int getArrayLen(T& array)