1、
s[i]=='1'){//判断是否为1
1要有单引号括起来,不能直接写1
2、C++中排序可以直接用sort,不用再自己写
引入头文件:#include<algorithm>
Sort (start,end,cmp)
参数
(1)start表示要排序数组的起始地址;
(2)end表示数组结束地址的下一位;
(3)cmp用于规定排序的方法,可不填,默认升序。
一般是直接对数组进行排序,例如对数组a[10]排序,sort(a,a+10)
3、数组的输入
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
4、 回溯法
dfs()函数模板
要考虑三点:入口、出口、第一次
出口:每做一次递归就+1
5、next_permutation(a,a+n)函数 全排列
头文件<algorithm>
对数组num中的前n个元素进行全排列,同时并改变num数组的值
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int num[3]={1,2,3};
do
{
cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;
}while(next_permutation(num,num+3));
return 0;
}
//对num数组的全排列
7、 c++输出时的换行符 endl 相当于C里面的\n
cout<<a<<" "<<b<<" "<<c<<endl;
8、 开方函数sqrt
头文件<math.h>
9、素数的高效判断方法
bool isprime(int i){
//判断质数 6除法 比较高效的方法
if(i<=1) return false;
if(i==2||i==3) return true;
if(i%6!=1 && i%6!=5) return false; //如果i不在6的右边,也不在6的左边,就不是质数
for(int j=5;j<=sqrt(i);j+=6){
if(i%j == 0 || i%(j+2) == 0) return false; //j+2是想判断5和7能不能被整除
}
return true;
}
10、超过两亿的数据用long保存
11、如果程序超时,我们首先考虑的是空间换时间
将中间结果保存在数组里面
12、string里面的6转换为int、float
比如string里面是6,转换成int,atoi(s.cstring)
转换成double, atof(s.c_string)
13、vector
二维矩阵:
定义一个二维矩阵:vector<vector<int>> vec
如果想获取vec的行数和列数,可以使用:vec.size()和 vec[0].size()来分别获取行数和列数。
vector一些常见使用方法:
https://www.cnblogs.com/YJthua-china/p/6550960.html
14、map
https://blog.csdn.net/forever__1234/article/details/89647975
unorder_map
https://www.cnblogs.com/slothrbk/p/8823092.html
区别
https://blog.csdn.net/BillCYJ/article/details/78985895