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语言算法设计的主要内容,如果未能解决你的问题,请参考以下文章

C语言程序设计C语言希尔排序算法!

高手们,帮忙啊,c语言程序设计

C语言代码片段

探寻宝藏 算法设计与分析课设 c语言代码 + 思路详解

C语言的10大基础算法

用c语言具体实现,设计一个生成树的代码。