C语言算法设计
Posted 彭祥.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言算法设计相关的知识,希望对你有一定的参考价值。
给定一个由 a-za−z 这 2626 个字符组成的字符串,统计其中哪个字符出现的次数最多。
输入格式
输入包含一行,一个字符串,长度不超过 10001000。
输出格式
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出 \\text{ASCII}ASCII 码最小的那一个字符。
#include<iostream>
#include<string>
using namespace std;
int cnt[26];
int main(){
freopen("cnt.in","r",stdin);
freopen("cnt.out","w",stdout);
string str;
cin>>str;
for(int i=0;i<str.size();i++){
cnt[str[i]-'a']++;
}
int max=0;
int index=0;
for(int i=0;i<26;i++){
if(max<cnt[i]){
max=cnt[i];
index=i;
}
}
cout<<(char)(index+'a')<<" "<<max;
return 0;
}
注意:cnt[26]要定义为全局遍历方初始化为0
接上题:统计字符默许是不区分大小写,最终输出时,以大写为准。
#include<iostream>
#include<string>
using namespace std;
int cnt[26];
int main(){
// freopen("count.in","r",stdin);
// freopen("count.out","w",stdout);
string str;
cin>>str;
for(int i=0;i<str.size();i++){
if(str[i]>='A'&&str[i]<='Z'){
cnt[str[i]-'A']++;
}else{
cnt[str[i]-'a']++;
}
}
int max=0;
int index=0;
for(int i=0;i<26;i++){
if(max<cnt[i]){
max=cnt[i];
index=i;
}
}
cout<<max<<" "<<(char)(index+'A');
return 0;
}
三人行必有我师
子曰:“三人行,必有我师”。人越多,可请教的也越多。假设有 nn 个人排成一列,每个人的知识值是一个整数,现在我们想要选取 kk 个连续的人,使得这 kk 个人的知识值之和最大,请你输出这个最大值。
本题我在自己的编译器上通过了,但在网页上却输出错误!
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long t[100005];
long long sum[100005];
int main() {
// freopen("teach.in", "r", stdin);
// freopen("teach.out", "w", stdout);
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> t[i];
}
for(int i=1;i<=n;i++) {
sum[i]=sum[i-1]+t[i];
}
int max=0;
int index=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
index=sum[j]-sum[j-k];
if(index>max){
max=index;
}
}
}
cout<<max;
return 0;
}
以上是关于C语言算法设计的主要内容,如果未能解决你的问题,请参考以下文章