判断卡片是不是只有两种,且可以被平分,是则输出yes,和两个种类,反之no。
#include <iostream>
#include <stdio.h>
using namespace std;
const int maxn = 111;
int num[maxn];
int main()
{
int n;
scanf("%d",&n);
int flag=1;
int k1=0,k2=0;
int a;
for(int i=1;i<=n;i++){
scanf("%d",&a);
if(!flag) continue;
if(num[a]==0){
num[a]++;
if(!k1){
k1=a;
continue;
}
if(!k2){
k2=a;
continue;
}
if(k1!=0&&k2!=0){
flag=0;
}
}
num[a]++;
}
if(flag&&num[k1]==num[k2]){
printf("YES\n%d %d\n",k1,k2);
}
else
printf("NO\n");
return 0;
}
输出每个连续小写字母串中,其中最多的字母种类。
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include<algorithm>
using namespace std;
#define LL long long
int cnt[222];
int main()
{
int n;
scanf("%d",&n);
char s[222];
scanf("%s",s);
int ans=0;
int num=0;
for(int i=0;i<n;i++){
if(s[i]>='A'&&s[i]<='Z'){
memset(cnt,0,sizeof cnt);
ans=max(num,ans);
num=0;
}
else{
if(cnt[s[i]]==0){
cnt[s[i]]++;
num++;
}
}
}
ans=max(ans,num);
printf("%d\n",ans);
}