C++学习杂记190330

  • C++ << 与 >> 的优先级
    我在使用<<和三元的条件判断时遇到了这个问题,cout<<(...)?... : ... 这样写是有问题的,因为<<的优先级比三元运算符的优先级高,所以应该写成 cout<<((...)?... : ...)

  • <algorithm> 中已经有现成的max和min函数,直接调用,不必自己写。

  • <string> 使用string类型需要include,虽然string不是基本类型,但是对string的拷贝是深拷贝,即:

    string str1 = "123";
    string str2 = str1;
    str2[1] = '1';
    

    在此之后str1不会被修改,string并不是简单地拷贝对象的地址,而是拷贝对象的内容。

  • 最后,这一次的杂记来自Kickdown, UVa1588,在练习的时候遇到了一些问题,下面是我的错误代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main() {
    string a, b;
    while (cin >> a >> b) {
        if (a.size() > b.size()) {
            string tmp = a;
            a = b;
            b = tmp;
        }
        int offset;
        string c;
        for (offset = 0; offset <= b.size(); offset++) {
            c = b;
            for (int i = 0; i < a.size() && i + offset < b.size(); i++) {
                c[i + offset] += a[i] - '0';
            }
            if (getMax(c) <= 3) {
                cout<<max(a.size()+offset, b.size())<<endl;
                break;
            }
        }
    }
    return 0;
}

一个很大的问题就是上下的匹配,寻找最短长度时,不仅要右移,同时也要左移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值