题目
- 1.奇数次数
- 2.最小步数
- 3.最大极小值和最小极大值
1.奇数次数
问题描述
给定一个仅包含数字字符的字符串,统计一下这个字符串中出现了多少个值为奇数的数位。
输入格式
输入一行包含一个字符串,仅由数字字符组成。
输出格式
输出一行包含一个整数,表示答案。
样例输入
123455
样例输出
4
样例输入
111222333111222333111222333
样例输出
18
#include <iostream>
#include <string>
using namespace std;
int main()
{string a;cin>>a;int sum=0,n=a.length();for(int i=0;i<n;i++){if((a[i]-'0')%2==1) sum++;}cout<<sum;return 0;
}
2.最小步数
问题描述
小蓝要上一个楼梯,楼梯共有n级台阶(即小蓝总共要走n级)。小蓝可以走1级、2级或3级台阶。请问小蓝至少要多少步才能上到楼梯顶端?
输入格式
输入一行包含一个整数 n。
输出格式
输出一行包含一个数表示答案。
样例输入
9
样例输出
3
#include <iostream>
using namespace std;
int fun(int n)
{int sum=0;if(n>=3){sum++;return sum+=fun(n-3);}else if(n==2) return 1;else if(n==1) return 1;else return 0;
}
int main()
{int n;cin>>n;cout<<fun(n);return 0;
}
3.最大极小值和最小极大值
问题描述
对于个例a[1], a[2]…a[n],.如果a[i满足ali< a[i-1]且a[i<a[i+ 1],则称a[i] 是一个极小值, 如果a[i]满浞a[i]>a[i-1]且a[i]>a[i+1],则称a[i]是一个极大值。给定一个序列,请找到极小值中最大的和极大值中最小的。
输入格式
输入的第一行包含一个整数n ,表示列的长度。第二行包含n个整数,相邻的整数之间使用一个空格分隔,表示给定的列。
输出格式
输出一包含两个整数,用一个空格分隔,分别表示极小值中最大的和极大值中最小的。输入保证至少存在一个极小值, 至少存在一个极大值。
样例输入
8
18244353
样例输出
35
#include <iostream>
using namespace std;
int main()
{int n,a[1001],max=0,min=10001;cin>>n;for(int i=0;i<n;i++) cin>>a[i];for(int i=1;i<n-1;i++){if(a[i]>a[i-1]&&a[i]>a[i+1]) min=(min<a[i]?min:a[i]);if(a[i]<a[i-1]&&a[i]<a[i+1]) max=(max>a[i]?max:a[i]);}cout<<max<<" "<<min;return 0;
}