1、连续最大和(类动态规划)
//连续最大和
int getMax(int a, int b){
return (a) > (b) ? (a) : (b);
}
int main() {
int a;
cin >> a;
vector<int> nums(a);
for (int i = 0; i < a; i++){
cin >> nums[i];
}
int sum = nums[0];
int max = nums[0];
for (int i = 1; i < a; i++){
sum = getMax(sum + nums[i], nums[i]);
if (sum >= max){
max = sum;
}
}
cout << max << endl;
return 0;
}
2、统计回文(先插入字符串,然后判断回文,并统计)
//统计回文
bool IsCircle(const 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(IsCircle(str)){
++count;
}
}
cout<<count<<endl;
return 0;
}
3、不要二(1表示有蛋糕,0表示没有蛋糕)
//不要二
int main() {
int w, h, count = 0;
cin >> w >> h;
vector<vector<int>> arr;
arr.resize(w);
for (auto& e : arr){
e.resize(h, 1);
}
for (int i = 0; i < w; ++i){
for (int j = 0; j < h; ++j){
if (arr[i][j] == 1){
++count;
if (i + 2 < w){
arr[i + 2][j] = 0;
}
if (j + 2 < h){
arr[i][j + 2] = 0;
}
}
}
}
cout << count << endl;
return 0;
}
4、将字符串转化成整数(重写atoi()函数)
//将字符串转化成整数
int StrToInt(string str) {
if (str.empty()) {
return 0;
}
int flg = 1;
if (str[0] == '-') {
flg = -1;
str[0] = '0';
}
else if (str[0] == '+') {
flg = 1;
str[0] = '0';
}
long long sum = 0;
for (int i = 0; i < str.size(); ++i) {
if (str[i] < '0' || str[i] > '9') {
sum = 0;
break;
}
sum = sum * 10 + str[i] - '0';
}
return (int)flg * sum;
}
int main(){
string s;
getline(cin, s);
int ret = StrToInt(s);
cout << ret << endl;
}