CSDN每日一练20230311

题目名称:山洞珍宝

题目描述

在一端山路中,有一个神秘的山洞。这个山洞里有许多神奇的宝藏。 你在山洞外发现了一个奇怪的墙壁,上面有一个神秘的符号,你需要通过一定的方法来解码这个符号,只有解码这个符号后你才能进入这个山洞。 经过一番推导,你发现这个符号是一个由 0 和 1 组成的字符串,每个字符都有一个权值,分别是 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 0,1,2,3,4,5,6,7,8,9 0,1,2,3,4,5,6,7,8,9。 你需要从这个字符串中找到一个最大的子串,使得该子串的权值之和最大。 给定一个字符串 S S S,其长度不超过 1 0 5 10^5 105,且只包含字符 ‘0’ 和 ‘1’。 请你找到字符串 S S S 中权值和最大的子串。

输入描述:

第一行包含一个字符串 S S S

输出描述:

输出一行,包含一个整数,表示最大的子串的权值和。

示例

输入 0110100110110100
输出 35

完全不知道题目是什么意思,示例也没有解释

题目名称:鬼画符门之大师兄恋爱(分组统计)

题目描述

鬼画符门,每年都会统计自己宗门鬼画符消耗的数量。 往年一直是大师兄管理。 但是大师兄谈恋爱了!!怎么能让这种事耽误自己恋爱时间呢!! 鬼艺接手了!! 你能帮鬼艺写一个程序帮助她统计每年消耗数量最多的鬼画符吗?

输入描述:

第一行输入整数n.(1<=n<=1000) 以下n行输入n个字符串。

输出描述:

输出答案字符串。

示例

输入
5
red
red
green
grenn
hen
输出
red

题目并不复杂,简单点可以使用C++中map容器进行统计
还可以先使用qsort排序,这样相同的放在一起好统计
有个问题,最多的有多个该怎么显示

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void*a,const void*b) 
{
	char**pa=(char**)a;
	char**pb=(char**)b;
	return strcmp(pa[0],pb[0]);
}
void solution(int n,char** words ) 
{
	// TODO: 请在此编写代码
	for (int i=0;i<n;i++) 
	{
		//printf("%sn",words[i]);
	}
	qsort(words,n,sizeof(char**),cmp);
	char*maxstr=NULL;
	int maxlen=0;
	char*tmpstr=words[0];
	int tmplen=0;
	for (int i=0;i<n;i++) 
	{
		if(strcmp(tmpstr,words[i])==0) 
		{
			tmplen++;
		} else 
		{
			if(tmplen>maxlen) 
			{
				maxstr=tmpstr;
				maxlen=tmplen;
			}
			tmpstr=words[i];
			tmplen=1;
		}
	}
	if(tmplen>maxlen) 
	{
		maxstr=tmpstr;
		maxlen=tmplen;
	}
	printf("%s",maxstr);
}
int main() 
{
	int n;
	scanf("%d", &n);
	char** words;
	words = (char**)malloc(n * sizeof(char**));
	for (int i = 0; i < n; i++) 
	{
		words[i] = (char*)malloc(sizeof(char)*1024);
		memset(words[i],0,sizeof(char)*1024);
	}
	for (int i = 0; i < n; i++) 
	{
		scanf(" %s", words[i]);
	}
	solution(n, words);
	return 0;
}

C++使用map容器如下

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
using namespace std;
int main() {
    map<string, int> h;
    int n, s = 0;
    string a, ans;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> a;
        ++h[a];
    }
    for (map<string, int>::iterator it = h.begin(); it != h.end(); ++it) {
        if (it->second > s) {
            s = it->second;
            ans = it->first;
        }
        s = max(s, it->second);
    }
    cout << ans << endl;
    return 0;
}

题目名称:等差数列(数学)

题目描述

一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列。在这个问题中a是一个非负的整数,b是正整数。 现给出三个整数,分别表示等差数列的第一项a、最后一项和公差b,求该数列的和。

输入描述:

输入三个整数,之间用空格隔开。第1个数作为首项,第2个数作为末项,第3个数作为公差.

输出描述:

输出占一行,包含一个整数,为该等差数列的和。如果所给三个整数,不能构成等差数列,则返回-1。

示例

输入 2 11 3
输出 26

首项,末项,公差都有了,可以求出项数,
根据公式就行了,这里要判断是不是等差数列

#include <stdio.h>
#include <stdlib.h>
void solution(int arr[3]) 
{
	int n=(arr[1]-arr[0])/arr[2];
	if(arr[0]+n*arr[2]!=arr[1]) 
	{
		printf("-1");
	} else 
	{
		printf("%d",(arr[0]+arr[1])*(n+1)/2);
	}
}
int main() 
{
	int arr[3];
	for (int i = 0; i < 3; i++) 
	{
		scanf("%d", &arr[i]);
	}
	solution(arr);
	return 0;
}
影分身是一种在忍者世界中常见的特殊技能,也是《火影忍者》中的一个重要元素。每个人都可以通过影分身术创造出许多个分身,这些分身可以同时进行各种活动。类比于影分身术,CSDN每日一练就像是一个模拟的技能训练场。每天CSDN都会发布一道题目供广大程序员参与练习。 参与影分身CSND每日一练的好处有许多。首先,通过每日一练,程序员们可以不断提高自己的编程能力。就像影分身可以通过快速反应和高效操作来增强自己的实力一样,参与每日一练可以锻炼程序员的编程思维和解决问题的能力。 其次,每日一练还可以丰富程序员的知识储备。每道题目都是经过精心挑选和设计的,涵盖了各种常见的编程知识点和技巧。通过解答这些问题,程序员们能够接触到各种新的问题和方法,扩展自己的知识领域。 另外,参与每日一练还可以增强程序员的交流与学习能力。在每道题目下方,CSDN提供了评论区供程序员们交流和讨论。程序员们可以在这里分享自己的解题思路和方法,互相学习和进步。这不仅能够提高解题能力,还能够拓宽视野,了解不同的编程思维和技术。 综上所述,影分身CSND每日一练就像是一个虚拟的技能训练场,可以帮助程序员们不断提升自己的编程能力,丰富知识储备,增强交流与学习能力。参与其中,每个程序员都能像影分身一样变得更加强大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值