A8-2 字符串的统计函数
#include <iostream>
#include <cstring>
using namespace std;
int main(){
string a,b;
getline(cin,a);
getline(cin,b);
int res=0;
for(int i=0;i<a.size();i++){
if(a[i]>='a'&&a[i]<='z') res++;
}
cout<<res<<" ";
res=0;
for(int i=0;i<b.size();i++){
if(b[i]>='a'&&b[i]<='z') res++;
}
cout<<res<<endl;
return 0;
}
A8-3 字符串的统计函数 大写-小写
#include <iostream>
#include <cstring>
using namespace std;
int main(){
string a,b;
getline(cin,a);
getline(cin,b);
int D=0,X=0;
for(int i=0;i<a.size();i++){
if(a[i]>='a'&&a[i]<='z') X++;
else if(a[i]>='A'&&a[i]<='Z') D++;
}
cout<<D-X<<" ";
D=0,X=0;
for(int i=0;i<b.size();i++){
if(b[i]>='a'&&b[i]<='z') X++;
else if(b[i]>='A'&&b[i]<='Z') D++;
}
cout<<D-X<<endl;
return 0;
}
A9-2 数组中最小正数的下标
雷点:第一个出现的最小的正数的下标
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N],b[N];
int main(){
int n,m;
scanf("%d%d",&n,&m);
int min=N,p=0;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]>0&&a[i]<min){
min=a[i];
p=i;
}
}
printf("%d ",p);
min=N;
for(int i=0;i<m;i++){
scanf("%d",&b[i]);
if(b[i]>0&&b[i]<min){
min=b[i];
p=i;
}
}
printf("%d",p);
return 0;
}
A9-3 数组中最大的负数
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N],b[N];
int main(){
int n,m;
scanf("%d%d",&n,&m);
int max=-N;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]<0&&a[i]>max){
max=a[i];
}
}
printf("%d ",max);
max=-N;
for(int i=0;i<m;i++){
scanf("%d",&b[i]);
if(b[i]<0&&b[i]>max){
max=b[i];
}
}
printf("%d",max);
return 0;
}
A9-4 数组中第二大的数
#include <iostream>
#include <algorithm>
#define x first
#define y second
using namespace std;
typedef pair <int,int> PII;
const int N = 100010;
PII a[N],b[N];
bool cmp(PII A, PII B){
if(A.x!=B.x) return A.x>B.x;
else return A.y<B.y;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&a[i].x);
a[i].y=i;
}
for(int i=0;i<m;i++){
scanf("%d",&b[i].x);
b[i].y=i;
}
sort(a,a+n,cmp);
sort(b,b+m,cmp);
printf("%d %d\n",a[1].y,b[1].y);
return 0;
}
A9-5 数组中最小值的个数
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N],b[N];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
for(int i=0;i<m;i++) scanf("%d",&b[i]);
sort(a,a+n);
sort(b,b+m);
int res=0;
for(int i=0;i<n;i++){
if(a[i]==a[0]) res++;
}
printf("%d ",res);
res=0;
for(int i=0;i<m;i++){
if(b[i]==b[0]) res++;
}
printf("%d",res);
return 0;
}
A9-6 数组中增序子序列的个数
#include <iostream>
using namespace std;
const int N = 100010;
int a[N],b[N];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
for(int i=0;i<m;i++) scanf("%d",&b[i]);
int cnt1=0;
int cnt2=0;
for(int i=0;i<n;i++){
if(a[i]>a[i+1]) cnt1++;
}
for(int i=0;i<m;i++){
if(b[i]>b[i+1]) cnt2++;
}
printf("%d %d",cnt1,cnt2);
return 0;
}