头像

acwingcyc

NEU




离线:1天前


最近来访(269)
用户头像
skydegree
用户头像
秘封の月列
用户头像
不高兴的兽奶
用户头像
rfx
用户头像
欣0613
用户头像
千秋Q
用户头像
lzyz111
用户头像
呆_8
用户头像
我叫玖
用户头像
yxc
用户头像
iiikunkun
用户头像
numberzoom
用户头像
ck1000
用户头像
cmdghc
用户头像
yyyy00
用户头像
虎蛋
用户头像
JooKS
用户头像
我呼吸了
用户头像
nk南枫
用户头像
_accept


C++ STL容器 —— string 用法详解

// 注意stl里涉及到的所有区间都是左闭右开
// 字符串插入函数
string s = "abcd";
// 下标2元素前插入"123"
s.insert(2,"123");
// 结果"ab123cd"

// 字符串擦除函数
string s = "abcd";
// 下标2元素往后擦除1个元素(也包括擦除下标2这个元素)
s.erase(2,1);
// 结果"abd"

//拼接函数
string s1 = "123";
string s2 = "abc";
s1.append(s2);
// "123abc"

// 找字串函数
// 返回从下标2元素开始往后5个的字串(包括下标2元素)
str.substr(2,5);
//例:str="abcdefghijklmn"
//str.substr(2,5) 就等于 "cdefg"


分享 常考概念

acwingcyc
13天前
  1. 什么是时空权衡原则?
    时间和空间是两个相互矛盾的量,有时为了追求其中一个量可以牺牲另一个量,例如为了追求时间上的效率可以适当地牺牲空间效率
    https://blog.csdn.net/yinxingtianxia/article/details/53095974

  2. 根据算法画出流程框图
    https://blog.csdn.net/weixin_39258979/article/details/122534988




acwingcyc
14天前

两个栈实现一个队列 实现思路

(1) 使用两个栈A,B,其中假定A负责push操作,B负责pop操作。

(2) 实现队列的push操作, 每次进行添加操作,都会相应得对栈A进行添加元素。

(3) 实现队列的pop操作,每次进行删除操作,因为栈B负责pop操作,

    首先判断栈B是否为空?

    a.如果B为空,则判断A是否为空?

      如果A也为空,则输出错误信息,此时队列为空。

      如果A不为空,则将栈A中的所有数据存储到B中。执B.push(A.top()),   A.pop().   然后在对栈B执行,B.pop()操作,将队列的头元素删除

    b.如果B不为空, 则直接对B执行 B.pop()操作。

https://zhuanlan.zhihu.com/p/268794221

https://blog.csdn.net/ailunlee/article/details/85100514




acwingcyc
14天前



acwingcyc
29天前


分享 广义表

acwingcyc
30天前



acwingcyc
1个月前
#include <iostream>

using namespace std;

// 对x分解质因数
// 思想:遍历2~i*i<=x内所有质因子,
//       从最小质因子2开始进行除尽操作,用s记录指数;
//       对大于根号x的质因子单独判断
void divide(int x) {
    for(int i = 2;i * i <= x;i ++) {
        if(x % i == 0) {
            int s = 0;
            while(x % i == 0) { // 除尽操作
                s ++;
                x /= i;
            }
            cout << i << " " << s << endl;
        }
    }  
    if(x > 1) cout << x << " " << "1" << endl;
    cout << endl;
}

int main() {
    int n;
    cin >> n;
    while(n --) {
        int x;
        cin >> x;
        divide(x);
    }
    return 0;
}


分享 IP地址

acwingcyc
1个月前
#include <iostream>
#include <string>

using namespace std;

/* 算法思想:搞一个指针扫描一遍ip字符串,
    1.只要没有遇到'.'就把字符串加入临时字符串s中;
    2.当遇到'.'后此时s里存的是ip数字,对其进行验证,验证完后清空s继续操作1
 * 
 * 
 * 
 *
 */
int stringTodec(string s) {
    int dec = 0;
    for(int i = 0;i < s.size();i ++) {
        dec *= 10;
        dec += s[i] - '0';
    }
    return dec;
}

bool isValidIp(string ip) {
    string s = "";
    for(int i = 0;i < ip.size();i ++) {
        if(ip[i] != '.') {
            s += ip[i];
        }
        else {
            int dec = stringTodec(s);
            if(dec < 0 || dec > 255) 
                return false;
            s = "";
        }
    }
    int dec = stringTodec(s);
        if(dec < 0 || dec > 255) 
            return false;
    return true;
}

int main() {
    string s;
    while(cin >> s) {
        if(isValidIp(s))
            cout << "Yes!" << endl;
        else cout << "No!" << endl;
    }
    return 0;
}


分享 汉诺塔

acwingcyc
1个月前

96. 奇怪的汉诺塔

#include <iostream>

using namespace std;

// 移动操作:将盘子从柱子A移动到柱子B
void move(char A,char B) {
    printf("%c -> %c\n",A,B);
}

// 将n个盘子,从柱子A上借助柱子B移动到柱子C
void hanoi(int n,char A,char B,char C) {
    // 若只剩一个盘子,直接从A移动到C
    if(n == 1) move(A,C);
    else {
        // 先将n-1个盘子从柱子A借助柱子C移动到柱子B
        hanoi(n-1,A,C,B);
        // 将A上的盘子移动到C
        move(A,C);
        // 将n-1个盘子从柱子B借助柱子A移动到柱子C
        hanoi(n-1,B,A,C);
    }
}

int main() {
    int n;
    cin >> n;
    hanoi(n,'A','B','C');
    return 0;
}



acwingcyc
1个月前
#include <iostream>

using namespace std;


int main() {
    int a,n;
    cin >> a >> n;
    int sum = 0;
    for(int i = 1;i <= n;i ++) {
        int k = i;
        int tmp = 0;
        while(k --) {
            tmp *= 10;
            tmp += a;
        }
        cout << tmp << ' ';
    }

    return 0;
}