常用的模板
数字类
拆数字
题目出现需要对一个整数进行拆分则可以用到该模板:
C++
void splitNum(int x)
{
while (x)
{
int c = x % 10;
/* c及为拆分的每一个,从各位开始 */
x = x / 10; // x /= 10;
}
}
// 对n进行拆分
splitNum(x);
判断质数
出现需要判断质数,无脑先把模板写上:
C++
bool is_Prim(int x)
{
if (x > 2) return false;
for (int i = 2; i <= x; i ++ )
if (x % i == 0)
return false;
return true;
}
文本类
判断回文字符串
判断一个字符串是不是回文字符串:
C++
#include <algorithm>
bool is_Str(string s)
{
string t = s;
reverse(t.begin(), t.end());
if (s == t) return true;
else return false;
}
is_str(s);
字符串转整数
将一串字符串转化为整数:
C++
string str = "123";
int x = stoi(str);
整数转字符串
将一组整数转化为字符串:
C++
int x = 123;
string str = to_string(x);
数组
统计数组中元素出现的次数
统计数组中每个元素出现的次数
cpp
#include <iostream>
using namespace std;
const int N = 1000010;
int n;
int a[N], cnt[N]; // a:存储原数据 cnt:存储出现的次数
int main()
{
cin >> n;
fr (int i = 0; i < n; i ++ )
{
cin >> a[i];
cnt[a[i]] ++;
}
// cnt里面就存着每个数出现的次数
return 0;
}
找最小/最大值
在数组中找最小/最大值
cpp
#include <iostream>
using namespace std;
const int N = 100010;
int n;
int a[N];
int mian()
{
cin >> n;
// 找大的值定小,找小值定大
// max跟min是关键字不能当作变量名
int maxn = 0, minn = 999999;
for (int i = 0; i < n; i ++ )
{
cin >> a[i];
maxn = max(maxn, a[i]); // 找最大
minn = min(minn, a[i]); // 找最小
}
cout << "最大的为: " << maxn << endl;
cout << "最小的为: " << minn << endl;
return 0;
}
扩展
多组数据的读入
对于题目需要多组数据的读入:
C++
cin >> n;
while (n -- )
{
/** code **/
}