NOIPL2程序设计题目解析含答案

NOIP第一篇章程序设计

本人是第一次写,不喜勿喷,望多多支持,谢谢!
话不多说,我们直接开始!

1. 统计字符1:
给定一个由 a-za−z 这 2626 个字符组成的字符串,统计其中哪个字符出现的次数最多。
输入格式
输入包含一行,一个字符串,长度不超过 10001000。
输出格式
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出 \text{ASCII}ASCII 码最小的那一个字符。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 cnt.in,输出文件为 cnt.out
样例输入复制
abbccc
样例输出复制
c 3

#include 
#include //这个是为了后面的freopen
#include 
using namespace std; 
int i,j;
int main(){
    freopen("cnt.in","r",stdin);
    freopen("cnt.out","w",stdout);//这两句是设置输入输出流
    char ch[1000];
    int word[26]={0};
    cin>>ch;
    int len=strlen(ch);
    for(i=0;i<len;i++){
        word[ch[i]-'a']++;//统计每个字符出现次数
    }
    int maxx=0;
    char maxn=0;
    for(i=0;i<26;i++){
        if(word[i]>maxx){//打擂台
            maxx=word[i];
            maxn=i+97;
        }
    }
    cout<<maxn<<" "<<maxx<<endl;//输出
    return 0;}

2. 三人行必有我师
子曰:“三人行,必有我师”。人越多,可请教的也越多。假设有 nn 个人排成一列,每个人的知识值是一个整数,现在我们想要选取 kk 个连续的人,使得这 kk 个人的知识值之和最大,请你输出这个最大值。
输入部分已经写好,所有代码均未锁定,可以根据需要自行更改。
输入格式
输入包含 22 行:
第一行有两个整数 n, k(1 \leq k \leq n \leq 10 ^ 5)n,k(1≤k≤n≤10 5 ),表示人的总数和要选的连续的人数
第二行有 nn 个空格隔开的整数 t_i(1 \leq t_i \leq 10 ^ 9)t
i(1≤t i≤10 9),为每个人的知识值
输出格式
输出为一个整数,为连续 kk 个人的知识值之和的最大值
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 teach.in,输出文件为 teach.out
样例输入复制
5 3
1 2 2 3 1
样例输出复制
7

#include 
#include //看看上面的就明白了
#include //貌似毛都没用
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];
    }
    long long max=0x7fffffff+1;//这里不加1非常大,但加1就超出类型范围了就变成了超级小负数
    for(int i=1;i<=n;i++){
        sum[i]=sum[i-1]+t[i];
    }
    for(int i=1;i+k-1<=n;i++){
        int j=i+k-1;
        if(max<sum[j]-sum[i-1])max=sum[j]-sum[i-1];
    }
    cout<<max;//这就不用我说了吧
    return 0;
}

以上是今天分享给大家的几篇,不喜勿喷,如有雷同,立即删帖!!!

你可能感兴趣的:(c++)