C++常见操作1
关闭c++缓存
std::ios_base::sync_with_stdio(false);
头文件 :
#include
using namespace std;
将数字转换为字符:num+‘0’(如’0’+6=‘6’)
将字符转换为数字:num-‘0’(如’6’-‘0’=6)
continue,break
绝对值abs():
添加头文件#include
对于整数abs(a-b);
对于浮点数fabs(a-b);
平方 pow()
pow(4,2);// 4的平方=16
开方
pow(4,0.5);// 4的平方根=2
sqrt(4);// 4的平方根=2
排序
#include <algorithm>
//升序
//sort函数第三个参数采用默认从小到大
int a[]={45,12,34,77,90,11,2,4,5,55};
sort(a,a+10);
//降序sort函数第三个参数自己定义,实现从大到小
int a[]={45,12,34,77,90,11,2,4,5,55};
sort(a,a+10,cmp);
bool cmp(int a,int b){
return a>b;
}
涂色问题可以看做标识符的转换(比如说初始时设为0,如若涂色,则变为1,最后计算1的个数就是计算涂色的个数)
若没给出输入数组的大小,只给了输入的值,可以以是否输入为判断条件,如:
while(cin>>a){}
冒泡排序:
function bubbleSort(arr) {
var len = arr.length;
for(var i = 0; i < len - 1; i++) {
for(var j = 0; j < len - 1 - i; j++) {
if(arr[j] > arr[j+1]) { // 相邻元素两两对比
var temp = arr[j+1]; // 元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
选择排序:
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for(var i = 0; i < len - 1; i++) {
minIndex = i;
for(var j = i + 1; j < len; j++) {
if(arr[j] < arr[minIndex]) { // 寻找最小的数
minIndex = j; // 将最小数的索引保存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
插入排序:
function insertionSort(arr) {
var len = arr.length;
var preIndex, current;
for(var i = 1; i < len; i++) {
preIndex = i - 1;
current = arr[i];
while(preIndex >= 0 && arr[preIndex] > current) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
return arr;
}
//A[i][0]为要移动的数,A[i][1]为移动距离,flag为A[i][0]这个数在S中的位置
if(A[i][1]>0){ //向后移动
for(int j=0;j<A[i][1];j++){
S[flag]=S[flag+1];
flag++;
}
S[flag]=A[i][0];
}else{ //向前移动
for(int j=0;j<-A[i][1];j++){
S[flag]=S[flag-1];
flag--;
}
S[flag]=A[i][0];
}
hash:
#include <iostream>
#include <map>
using namespace std;
int main()
{
//维数
long long dim;
cin>>dim;
//非零值个数
long long uNotZero,vNotZero;
cin>>uNotZero;
cin>>vNotZero;
map<long long, long long> u;
map<long long, long long> v;
for(long long i=0;i<uNotZero;i++) {
long long local,value;
cin>>local;
cin>>value;
u.insert(pair<long long, long long>(local, value));
}
for(long long i=0;i<vNotZero;i++) {
long long local,value;
cin>>local;
cin>>value;
v.insert(pair<long long, long long>(local, value));
}
//求内积 遍历umap
long long ans=0;
map<long long,long long>::iterator it;
map<long long, long long>::iterator iter;
for(it=u.begin();it!=u.end();++it){
long long key = it->first;
iter = v.find(key);
if(iter != v.end()) ans+=u[key] * v[key];
}
cout<<ans;
}