-
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;
}
一个很大的问题就是上下的匹配,寻找最短长度时,不仅要右移,同时也要左移。