算法竞赛常见问题
CSDN平台可能出现排版问题或者图片缺失,请访问duke486.github.io
不知道传入多少行、多少个字符
#include <iostream>
using namespace std;
int main() {
// 从标准输入读取一行数据直到结束
string line;
while (getline(cin, line)) {
cout << line << endl;
}
// 读取一个字符直到结束
char c;
while ((c = getchar()) != EOF) {
cout << c;
}
return 0;
}
一行传入n个数字存为数组
#include<iostream>
#include<cmath>
#include<cstdio>
#include<string>
#include<vector>
#include<algorithm>
#include<sstream>
using namespace std;
int main() {
vector<int>arr;
string str;
getline(cin,str);
stringstream ss(str);//将字符串转化为流
int element;//读取数字,依次加入数组
while (ss>>element)
{
arr.push_back(element);
}
sort(arr.begin(), arr.end());//排序并且输出
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << ' ';
}
return 0;
}
获取字符串长度
#include<vector>
#include<string>
string a="xxx";
cout<<a.size();
在代码中定义多行字符串
string =R"(内容
内容)";
数组去重复、升序
#include<algorithm>
sort(vec.begin(), vec.end());//排序
//如果对普通数组,sort(arr, arr + sizeof(arr) / sizeof(arr[0]));
auto it = unique(vec.begin(), vec.end());
//unique只能识别相邻的重复元素!
/*把重复项挪到尾部并删除,但这不会进行排序。
it 是 unique() 函数的返回值,它指向第一个重复元素的迭代器。*/
vec.erase(it, vec.end());
阶乘
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}