DP和记忆化搜索的区别就是,没有区别,DP时间更快,实质上都是找规律,从后往前推,用空间换时间的方法去优化。
#include 中的memset函数
用法:memset ( arry , number , sizeof (arry) ) ;
用途:清空数组,将数组中的所有数据变成number值(清空操作);
sort(begin,end,(默认升序)complare(返回a>b表示降序))
数组标记法:用两个数组,一个数组存数据,以第一个数组的数据作为另一个数组的下标,可以另其为1(因为默认初始化的数组数据为0(int类型)),这样就相当于对此下标的数据作了一个标记。
Eg:t[1]=1; g[t[1]] = 1;
初始化局部变量和全局变量
当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:
数据类型 | 初始化默认值 |
---|---|
int | 0 |
char | ‘\0’ |
float | 0 |
double | 0 |
pointer | NULL |
C的标准函数
常用函数查找
.math中的求平方根:sqrt(x) , 求绝对值:fabs(x)。
tolower
string.h中的strcpy结束符一样复制,strcat 此过程将覆盖第一个参数的结束符 ‘\0’。
strcmp 函数用于比较两个字符串,一直到结束符。
**在输入字符串时,类似于gets_s这样的函数只能向char*q输入,不能向string类型输入。
d是可以geiline(cin,string)向string类型输入字符。
eg:string s;
getline(cin,s);//用s.size 在洛谷里面用这种方法
//char s[15];
//gets_s(s);//用sizeof
getline()用来读取一行数据,但是当getline()前面进行了cin输入的话,getline()会把进行cin输入时行末丢弃的换行符读入,从而造成getline()第一次获得的数据为一空行。解决方法是在cin后面加一行cin.ignore();
getchar(): 可从终端获得一个字符的ASCII码值。在终端输入字符时并非输入一个字符就会返回,而是在遇到回车换行前,所有输入的字符都会缓冲在键盘缓冲器中,直到回车换行一次性将所有字符按序依次赋给相应的变量,在这里一定要注意最后一个字符即’\n’,该字符也会赋给一个相应的变量(当然这要你定义的用来接收字符的变量数比你输入的可见字符多一才可以)。eg:
int main() {
char c;
while ((c = getchar()) != ’ ')
{
cout << c; cout << “11111”;}
}
输入:333Enter
输出:
333
311111311111311111
11111
C++中%d 和 %04d有什么区别?
%d左对齐,输出变量的所有数字;%4d右对齐,宽度为4,左边填充空格,当变量的实际宽度大于4时,输出变量的所有数字;%04d与%4d的唯一区别就是左边填充0。
C++中的精度控制
在头文件中的cout<<fixed<<setprecision(n);保留小数点后n位,不够的用0补齐;
string中的stoi函数: in