统计回文
解题思路:
遍历str1,将str2插入str1的每个位置,判断是否回文,是就++count;需要注意的是这里不能直接用str1,这样的话str1就改变了,判断下一个位置就不对了。
bool reverse(string s)
{
int begin = 0;
int end = s.size() - 1;
while (begin < end)
{
if (s[begin] != s[end])
{
return false;
}
++begin;
--end;
}
return true;
}
int main()
{
string str1, str2;
getline(cin, str1);
getline(cin, str2);
int count = 0;
for (int i = 0; i <= str1.size(); i++)
{
string str = str1;
str.insert(i, str2);
if (reverse(str))
{
count++;
}
cout << count << endl;
}
return 0;
}
连续最大和
解题思路:
这是一个简单的动归问题,挨个求求哪一个的子数组最大。
int GetMax(int a, int b)
{
return a > b ? a : b;
}
int main()
{
int size;
cin >> size;
vector<int> nums(size);
for (size_t i = 0; i < size; i++)
{
cin >> nums[i];
}
int sum = nums[0];
int max = nums[0];
for (int i = 1; i < size; i++)
{
sum = GetMax(sum + nums[i], nums[i]);
max = sum;
}
cout << max << endl;
return 0;
}