礼炮 | ||
|
问题描述
果老师想为信竞之王的诞生献上礼炮!
有一串长度为的小写字母组成的字符串,果老师可以从中挑选‘k’ ‘i’ ‘n’ ‘g’四个字符组成一支礼炮,或者从中挑选‘k’ ‘i’ ‘n’ ‘g’ ‘i’ ‘n’ ‘g’七个字符组成两支礼炮。请问果老师为信竞之王的诞生最多能献上多少礼炮?
输入格式
第一行一个正整数 ,表示字符串长度,。
第二行一串只含有小写字母的字符串。
输出格式
输出果老师为信竞之王的诞生能献上的最多礼炮数。
样例输入
4
king
样例输出
1
我的代码:
#include<iostream>
using namespace std;
int k,i,n,g,cnt,x,y;
char a[10000001];
int main(){
int s;
scanf("%d",&s);
scanf("%s",a);
for(int j=0;j<s;j++){
if(a[j]=='k'){
k++;
continue;
}
if(a[j]=='i'){
i++;
continue;
}
if(a[j]=='n'){
n++;
continue;
}
if(a[j]=='g'){
g++;
continue;
}
}
x=min(i,n);
y=min(x,g);
if(k<=(y/2)){
cout<<k*2;
return 0;
}
cout<<y;
}
总用时
358 MS
最大用时
187 MS
最大内存
12232 KB
我爸的代码 :
#include<iostream>
using namespace std;
int cnt,x,y;
char a[10000001];
int m[26];
int main(){
int s;
scanf("%d",&s);
scanf("%s",a);
for(int j=0;j<s;j++){
m[a[j]-'a']++;
}
int k=m['k'-'a'];
int i=m['i'-'a'];
int n=m['n'-'a'];
int g=m['g'-'a'];
x=min(i,n);
y=min(x,g);
if(k<=(y/2)){
printf("%d",k*2);
return 0;
}
printf("%d",y);
}
总用时
124 MS
最大用时
93 MS
最大内存
10496 KB
看来我还是不如我爸......