C语言-每日刷题练习

[蓝桥杯 2013 省 B] 翻硬币

 

题目背景

小明正在玩一个“翻硬币”的游戏。

题目描述

桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币,则变为 oooo***oooo。现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

输入格式

两行等长字符串,分别表示初始状态和要达到的目标状态,每行长度小于 1000。

数据保证一定存在至少一种方案可以从初始状态和要达到的目标状态。

输出格式

一个整数,表示最小操作步数。

输入输出样例

输入输出样例

输入 #1

**********
o****o****

输出 #1

5

 输入 #2

*o**o***o***
*o***o**o***

 输出 #2

1
#include<stdio.h>
#include<string.h>
#include <assert.h>
int main()
{char arr[1000] = { 0 }, str[1000] = { 0 }, count = 0;scanf("%s%s", &arr, &str);assert(strlen(arr)== strlen(str));//断言-判断两个字符串长度是否相等int rs = strlen(arr);int i = 0;while (i < rs)//遍历找不同{if (arr[i] != str[i]){arr[i] = (arr[i] == '*' ? 'o' : '*');arr[i + 1] = (arr[i + 1] == '*' ? 'o' : '*');count++;}i++;}printf("%d", count);return 0;
}

 [NOIP2006 普及组] 明明的随机数

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数 (N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入格式

输入有两行,第 1 行为 1 个正整数,表示所生成的随机数的个数 N。

第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。

输出格式

输出也是两行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。

第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

输入输出样例

输入 #1

10
20 40 32 67 40 20 89 300 400 15

输出 #1

8
15 20 32 40 67 89 300 400
#include<stdio.h>
int main()
{int n = 0, str[100] = { 0 }, temp = 0;scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d", &str[i]);}for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - 1 - i; j++){if (str[j + 1] < str[j]){temp = str[j + 1];str[j + 1] = str[j];str[j] = temp;}}}for (int i = 0; i < n - 1; i++)//n-1是为了防止越界{//把i+1后边的元素往前覆盖if (str[i] == str[i + 1]){for (int k = i; k < n - 1; k++){str[k] = str[k + 1];}n--;i--;}}printf("%d\n", n);for (int i = 0; i < n; i++){printf("%d ", str[i]);}return 0;
}

P8835 [传智杯 #3 决赛] 子串

题目背景

disangan233 喜欢字符串,于是 disangan333 想让你找一些 disangan233 喜欢的串。

题目描述

在传智的开发课堂上,希望您开发一款文档处理软件。

给定 T 组询问,每次给定 2 个长度为 n,m 的只含英文字母的字符串 a,b,求 a 在 b 中的出现次数,相同字符不区分大小写。注意 a 是 b 中连续子序列。

对于所有数据,T≤100,∑n≤∑m≤10^3。字符串仅由大小或者小写的英文字母组成。

输入格式

输入共 3T+1 行。

第 1 行输入 1 个正整数 T。

接下来共 T 组输入,每组输入共 3 行。

第 1 行输入 2 个正整数 n,m。

第 2 行输入一个长度为 n 的字符串 a。

第 3 行输入一个长度为 m 的字符串 b。

输出格式

输出共 T 行,第 i 行输出 1 个整数,表示询问 i 的答案。

输入输出样例

输入 #1

5
3 10
abc
abcabcabca
2 10
aa
AAaAaaAaAa
5 5
AbCdE
eDcBa
5 5
abcde
ABCDE
3 10
aba
ABaBaAbaBA

输出 #1

3
9
0
1
4

解法一: 

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
int main()
{int  t = 0, n = 0, m = 0, count = 0;//t小组数,n,m字符串的长度,count计数器scanf("%d", &t);while (t--){scanf("%d%d", &n, &m);char* a = (char*)malloc( (n+1) * sizeof(char));//开辟数组a的动态内存空间//因为数组类型是字符串要留一个字节放斜杆零,防止越界访问if (a == NULL){return  1;}scanf("%s", a);char* b = (char*)malloc( (m+1) * sizeof(char));//开辟数组b的动态内存空间if (b == NULL){return 1;}scanf("%s", b);char* ptr = b;//记录b的首地址for (int i = 0; i < n; i++){*a = tolower(*a);//统一转换为小写}for (int i = 0; i < m; i++){*b = tolower(*b);}for (int i = 0; i < m; i++){if (strncmp( a ,ptr , n) == 0)  //比较前n个字符相同,count++{count++;ptr + n;                    //指向b的指针向前挪动n位比较下一个}ptr++;if (m - i < n){break;}}printf("%d", count);free(a);                            //释放动态空间a = NULL;free(b);b = NULL;}return 0;
}

 解法一的运行时间可能会超时,可以试试解法二:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 函数用于计算字符串a在字符串b中的出现次数
int JiShu(char* a, char* b) 
{int count = 0;int lenA = strlen(a);int lenB = strlen(b);for (int i = 0; i <= lenB - lenA; i++){// 忽略大小写比较int flag = 1;for (int j = 0; j < lenA; j++) {if (tolower(a[j]) != tolower(b[i + j])){flag = 0;break;}}if (flag) {count++;}}return count;
}
int main() 
{int t;scanf("%d", &t);for (int i = 0; i < t; i++){int n, m;scanf("%d %d", &n, &m);char a[1001], b[1001];scanf("%s", a);scanf("%s", b);int rs = JiShu(a, b);printf("%d\n", rs);}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/215609.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从零开始学习JVM | 第三篇】类的生命周期(高频面试)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。 在本文中&#xff0c;我们将深入探讨类的生命周期&#xff0c;从类加载到…

Docker Container(容器)——6

目录&#xff1a; 什么是容器&#xff1f;容器生活案例&#xff1f;为什么需要容器&#xff1f;容器的生命周期 容器 OOM容器异常退出容器暂停容器命令清单容器命令详解 docker createdocker rundocker psdocker logsdocker attachdocker execdocker startdocker stopdocker r…

用Sketch for Mac轻松创作无限可能的矢量绘图

在如今的数码时代&#xff0c;矢量绘图软件成为了许多设计师和创意爱好者的必备工具。而在众多的矢量绘图软件中&#xff0c;Sketch for Mac无疑是最受欢迎的一款。它以其简洁易用的界面和强大的功能&#xff0c;让用户能够轻松创作出无限可能的矢量图形。 首先&#xff0c;Sk…

Jmeter入门

一、下载jmeter 官网下载 下载之后解压&#xff0c;在目录/bin下面找到jmeter.bat双击之后即可启动Jmeter。 二、使用 如下左图&#xff0c;选择语言为中文&#xff0c;可以修改测试计划的名称。如下右图&#xff0c;添加线程组 添加线程组 添加http请求 路径传参方式 …

vue3-自定义组件的使用及传值!!!

1.在vue项目中创建一个自定义组件&#xff08;大多数页面中相同的样式&#xff0c;将其封装到组件中&#xff0c;可重复使用&#xff09; 2.将公共组件引入到你想使用的页面中 结果显示如下&#xff1a; 3.为公共组件传值 4.公共组件接收值&#xff0c;显示在组件上 注意事项&a…

wappalyzer基于插件的网站开发技术解析工具

一、wappalyzer 解释&#xff1a;这是一款强大的工具&#xff0c;其主要能提供一种快速、可靠地检测网站所使用技术栈的方法&#xff0c;也就说说&#xff0c;服务器发来的信息都会被它剖析&#xff0c;然后分析出前端的技术栈&#xff0c;有时后端所使用的技术栈如果网页特征…

串口通信(1)-硬件知识

本文讲解串口通信的硬件知识。让读者快速了解硬件知识&#xff0c;为下一步编写代码做基础。 目录 一、概述 二、串口通信分类 2.1信息的传送方向进行分类 2.2同步通信和异步通信 三、串口协议 3.1 RS232 3.1.1 电气特性 3.1.2 连接器的机械特性 3.1.3 连接类型 3.1…

2023全国职业院校技能大赛信息安全管理与评估正式赛(模块三CTF)

全国职业院校技能大赛高等职业教育组信息安全管理与评估 \任务书\ 模块三 网络安全渗透、理论技能与职业素养 极安云科专注技能竞赛&#xff0c;包含网络建设与运维和信息安全管理与评估两大赛项&#xff0c;及各大CTF&#xff0c;基于两大赛项提供全面的系统性培训&#xf…

Pipenv环境配置+Pytest运行

环境配置 使用Pipenv进行虚拟环境管理&#xff0c;Pipfile为依赖模块管理文件。 安装pipenv&#xff1a;brew install pipenv根项目根目录下执行命令创建虚拟环境&#xff1a; pipenv install在Pycharm中指定项目运行的虚拟环境 &#xff1a;File->Settings->Project:-…

有趣的数学 数学建模入门三 数学建模入门示例两例 利用微积分求解

一、入门示例1 1、问题描述 某宾馆有150间客房&#xff0c;经过一段时间的经营&#xff0c;该宾馆经理得到一些数据&#xff1a;如果每间客房定价为200元&#xff0c;入住率为55&#xff05;&#xff1b;定价为180元&#xff0c;入住率为65&#xff05;&#xff1b;定价为160元…

第 5 部分 — LLM中红队的深入分析:数学和实证方法

一、说明 大型语言模型 (LLM) 领域正在迅速发展&#xff0c;需要强大的红队策略来确保其安全性和可靠性。 红队是一种模拟对抗性攻击来识别漏洞的方法&#xff0c;需要对理论基础和实际应用有深入的了解。在这个分析中&#xff0c;我深入研究了复杂的数学模型&#xff0c;并提供…

【k8s】使用Finalizers控制k8s资源删除

文章目录 词汇表基本删除操作Finalizers是什么&#xff1f;Owner References又是什么&#xff1f;强制删除命名空间参考 你有没有在使用k8s过程中遇到过这种情况: 通过kubectl delete指令删除一些资源时&#xff0c;一直处于Terminating状态。 这是为什么呢&#xff1f; 本文将…

自下而上-存储全栈(TiDB/RockDB/SPDK/fuse/ceph/NVMe/ext4)存储技术专家成长路线

数字化时代的到来带来了大规模数据的产生&#xff0c;各行各业都面临着数据爆炸的挑战。 随着云计算、物联网、人工智能等新兴技术的发展&#xff0c;对存储技术的需求也越来越多样化。不同应用场景对存储的容量、性能、可靠性和成本等方面都有不同的要求。具备存储技术知识和技…

关系型数据库-SQLite介绍

优点&#xff1a; 1>sqlite占用的内存和cpu资源较少 2>源代码开源&#xff0c;完全免费 3>检索速度上十几兆、几十兆的数据库sqlite很快&#xff0c;但是上G的时候最慢 4>管理简单&#xff0c;几乎无需管理。灵巧、快速和可靠性高 5>功能简…

JVM 性能调优

概述篇 面试题 讲讲你理解的性能评价及测试指标&#xff1f;&#xff08;瓜子&#xff09; 生产环境中的问题 生产环境发生了内存溢出该如何处理&#xff1f;生产环境应该给服务器分配多少内存合适&#xff1f;如何对垃圾回收器的性能进行调优&#xff1f;生产环境CPU负载飙高…

为什么近期白酒市场股票暴跌?2024年中高端酒企发展如何撬动市场?

为什么近期白酒市场股票暴跌&#xff1f;2024年中高端酒企发展如何撬动市场&#xff1f; 近期白酒市场股票暴跌的原因主要有两个方面&#xff1a;一是宏观经济环境的不景气&#xff0c;导致投资者对白酒行业的未来发展持谨慎态度&#xff1b;二是白酒市场竞争激烈&#xff0c;龙…

喜报|电巢科技获批教育部第三期供需对接就业育人项目100项!

项目获批 近日&#xff0c;教育部公布了第三期供需对接就业育人项目立项名单&#xff0c;电巢科技获批此次供需对接就业育人项目100项&#xff0c;其中包括定向人才培养培训项目40项、就业实习基地项目40项、人力资源提升项目20项。 在教育部高校学生司指导下&#xff0c;电巢…

Rust 学习

Rust 官网&#xff1a;https://www.rust-lang.org/zh-CN/ 1、Rust 简介 Rust 是一门注重安全&#xff08;safety&#xff09;、速度&#xff08;speed&#xff09;和并发&#xff08;concurrency&#xff09;的现代系统编程语言。Rust 通过内存安全来实现以上目标&#xff0c;但…

人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码

人体关键点检测2&#xff1a;Pytorch实现人体关键点检测(人体姿势估计)含训练代码 目录 人体关键点检测2&#xff1a;Pytorch实现人体关键点检测(人体姿势估计)含训练代码 1. 前言 2.人体关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法&#xff1…

听GPT 讲Rust源代码--src/tools(8)

File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs 在Rust源代码中&#xff0c;rust-analyzer是一个Rust编程语言的语言服务器。它提供了代码补全、代码重构和代码导航等功能来帮助开发者提高编码效率。 在rust-analyzer的代码目…