Skip to content

常用的模板

数字类

拆数字

题目出现需要对一个整数进行拆分则可以用到该模板:

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 **/
}