ACM 寒假第一讲:C++ 基础

news/2025/1/23 23:20:17/文章来源:https://www.cnblogs.com/cicifang/p/18688768

第一题:long loong
#include<stdio.h> int main(){ int N; scanf("%d",&N); printf("L"); for(int i=0;i<N;i++){ printf("o"); } printf("ng"); return 0; }
思路:要求输入有N个o的字符串long,先输入一个整数N,然后输出"L",用for循环输出N个o,最后输出ng
第二题:
`#include <stdio.h>

include <ctype.h>

include <string.h>

int main() {
int N;
scanf("%d", &N);
char a[100];
for (int i = 0; i < N; i++) {
scanf("%s", a);
for (int j = 0; a[j] != '\0'; j++) {
a[j] = toupper(a[j]);
}
if (strcmp(a, "YES") == 0) {
printf("YES\n");
} else {
printf("NO\n");
}
}
return 0;
}
思路:要求判断字符串是否等于“YES”,首先输入要判断的字符串个数,再定义一个字符数组,遍历数组输入字符,为方便判断,统一转换为大写字母,用toupper函数实现,然后用if语句判断字符串并输出结果 第三题:#include<stdio.h>

include<string.h>

int main(){
char a[61];
int N;
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%s",a);
int l=strlen(a);
int x=((int)a[l-1])-48;
if(x%2==0){
printf("even\n");
}
else{
printf("odd\n");
}
}
return 0;
}思路:第一次做的时候没有考虑到数字的大小,直接用int型定义了导致错误,更正后如下:定义一个整型数组,输入要判断的数的个数N,输入要判断的整数,用strlen取整数的长度,由于判断整数的奇偶可以只看个位,所以我直接取个位数来判断,用if语句判断并输出结果 第四题:#include <stdio.h>

include <string.h>

int main() {
int t, n, m;
scanf("%d", &t);

while (t--) {scanf("%d %d", &n, &m); char a[51]; scanf("%s", a);int count[7] = {0}; for (int i = 0; i < n; i++) {count[a[i] - 'A']++; }int needed = 0; for (int i = 0; i < 7; i++) { if (count[i] < m) { needed += m - count[i];}}printf("%d\n", needed); 
}return 0;

}
`
思路:输入测试用例的数量t,输入轮数m和题数n,然后输入字符串a,定义一个大小为 7 的数组count,用于统计字符串中每个字符的出现次数,最后计算需要出的额外题目数,当出现次数小于轮数时,需要额外出题,最后输出需要出的额外题目数
第五题:

include

include

using namespace std;

int main() {
int n, m, k;
cin >> n >> m >> k;
vector<vector> records(m, vector(n));
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> records[i][j];
}
}

int days= 0; for (int i = 0; i < m; i++) { int count_k = 0; for (int j = 0; j < n; j++) { if (records[i][j] == k) {count_k++;}}if (count_k >= (n + 1) / 2) { days++;}
}if (days >= (m + 1) / 2) { cout << "YES" << endl;
} else {cout << "NO" << endl;
}return 0;

}
思路:定义一个二维数组records,用于存储输入的数据,通过嵌套循环读取矩阵中的每个元素,存储到 records 中,在每一行中,用变量 count_k 统计目标值 k 的出现次数,如果在某一行中,k 的出现次数大于或等于该行元素总数的一半((n + 1) / 2),则将 days 的值加 1,最后用if语句判断并输出结果
第六题:
`#include<bits/stdc++.h>
using namespace std;

int main(){
int n;
cin>>n;
string s;
cin>>s;
int q;
cin>>q;
char ch1,ch2;
char k[27],m[27];
for(int i=0;i<27;i++){
k[i]='a'+i;
m[i]='a'+i;
}
for(int i=0;i<q;i++){
cin>>ch1>>ch2;
for(int j=0;j<27;j++){
if(k[j]ch1){
k[j]=ch2;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<27;j++){
if(s[i]
m[j]){
s[i]=k[j];
break;
}

	}
}
cout<<s;
return 0;
}`

思路:这题一开始不会,听完讲评之后理解一些了,程序的目标是:读取一个字符串 s 和一组字符替换规则。根据这些规则,将字符串中的字符逐个替换。输出最终替换后的字符串。n是字符串的长度,s是需要进行字符替换的原始字符串,q是替换规则的数量。ch1 和 ch2 用于存储每条替换规则中的字符。k 和 m 是两个大小为 27 的字符数组,用于存储替换规则和原始字符映射。k用于存储最终的字符映射关系。m用于存储原始字符('a' 到 'z',加上一个额外的字符,总共 27 个)。循环读取 q 条替换规则,每条规则包含两个字符 ch1 和 ch2。对于每条规则,遍历数组 k,将所有等于 ch1 的字符替换为 ch2。循环读取 q 条替换规则,每条规则包含两个字符 ch1 和 ch2。对于每条规则,遍历数组 k,将所有等于 ch1 的字符替换为 ch2,最后输出最终替换后的字符串。
第七题:
`#include
using namespace std;

int num[1005][1005];
int main()
{
int x,y,op,n,m;
cin>>x>>y;
for(int i=1;i<=x;i++){
for(int j=1;j<=x;j++){
cin>>num[i][j];
}
}
int h[1005],l[1005];
for(int i=1;i<=1005;i++){
h[i]=i;
l[i]=i;
}
while(y--){
cin>>op>>n>>m;
switch(op){
case 0:{
int temp=l[n];
l[n]=l[m];
l[m]=temp;

			break;}case 1:{int temp=h[n];h[n]=h[m];h[m]=temp;break;}}
}
for(int i=1;i<=x;i++){for(int j=1;j<=x;j++){cout<<num[h[i]][l[j]]<<" ";}cout<<endl;
}
return 0;

}`
思路:一开始用常规思路做然后超时了,跟同学讨论之后借鉴了同学的思路,以行或列为单位交换,缩短运行时间
学习总结:刚接触c++,还不太会用,前面一些题目用的还是c语言,另外在解题思路上还有些死板,通过这一专题的学习有了一些启发,后续学习中将会继续认真学习c++语法以及解题思路。

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

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

相关文章

### 深入敏捷之道:PSM认证与高效实践的结合

深入敏捷之道:PSM认证与高效实践的结合​ 在敏捷开发的世界中,Scrum因其灵活性和高效性成为全球最受欢迎的框架之一。而PSM(Professional Scrum Master)认证则是验证敏捷实践者专业能力的重要指标,不仅能提升个人职业竞争力,还能帮助团队更高效地实现目标。 Professional…

9. SpringCloud Alibaba Sentinel 流量控制、熔断降级、系统负载,热点规则的部署设置讲解

9. SpringCloud Alibaba Sentinel 流量控制、熔断降级、系统负载,热点规则的部署设置讲解 @目录9. SpringCloud Alibaba Sentinel 流量控制、熔断降级、系统负载,热点规则的部署设置讲解1. Sentinel 是什么?2. Sentinel 控制台3. Sentinel 下载&安装&运行4. Sentine…

MySQL训练营-慢查询诊断问题

慢查询相关参数和建议配置 slow_query_log + long_query_time 日志开关,是否记慢查询日志以及超过多长时间判定为慢查询。 查看参数设置:SHOW VARIABLES LIKE slow_query_log; SHOW VARIABLES LIKE long_query_time;实践建议:set global long_query_time=1; 分析型业务,set…

并发编程 - 线程同步(一)

线程同步确保多线程环境下共享资源安全使用,避免竞争条件和数据不一致。实现方式有避免资源共享、用户模式同步、内核模式同步和混合模式同步。经过前面对线程的尝试使用,我们对线程的了解又进一步加深了。今天我们继续来深入学习线程的新知识 —— 线程同步。01、什么是线程…

API接口开发设计

写接口看似是一个很简单的事情,但是往往越简单的事情越不容易做好,让我们看看如何写好一个接口。 01. 什么是接口 接口其实是一种规范,在生活中随处可见,比如:不同厂商的水管使用统一的水管接口对接、电脑厂商和配件厂商按照统一的 USB 接口标准进行生产完成配对、应用程序…

FZU ACM寒假集训专题一

只有前四题是自己做的,都ac。 做题思路: 前三题比较简单。第四题想法是,一个一个读字母,按照asc码值分别存储个数,用轮数减个数得出还缺几个,最后加在一起。 中间因为不清楚scanf,让getchar读到换行符出错了。 学习总结: 本专题学习了时空复杂度的计算,c++语法糖,还有…

谷歌泰坦:Transformer之后的AI时代?

介绍 2017年,谷歌发布了一篇具有革命性意义的论文,题为《Attention is All You Need》(注意力是你所需要的一切)。这篇论文引发了我们今天所经历的AI革命,并引入了Transformer模型。Transformer已经成为如今几乎所有顶级大型语言模型(LLM)的核心架构。 Transformer的优势…

2025.1.23冠词

错误分析: 对于冠词知识点掌握不透彻 需掌握知识点: ‌冠词‌是英语语法中的重要概念,主要分为不定冠词(a/an)和定冠词(the),此外还有零冠词。冠词本身不能单独使用,也没有词义,主要用于帮助指明名词的含义。‌ 不定冠词(a/an) ‌用法‌:不定冠词用于单数可数名词…

2025多校冲刺省选模拟赛7

2025多校冲刺省选模拟赛7\(T1\) A. 三色卡(card) \(0pts\)如果存在一个小矩形和大矩形的大小相同,此时另外两个矩形可以任意放,贡献是容易计算的。否则至少需要一个小矩形覆盖大矩形的两个角,通过交换长、宽钦定完全覆盖行的矩形比完全覆盖列的矩形的数量多。完全覆盖行的矩…

重试机制与 CompletableFuture 拓展

重试机制与 CompletableFuture 拓展 禁止转载。 本文旨在讨论重试机制的特点和策略,分析常用重试类库的实现,讨论为 CompletableFuture 添加重试机制的方法。文章首发同名公众号,欢迎关注。 重试示例 以下是一个常见的使用异步重试的例子,当我们需要重试功能时,只需调用 r…

DL00765-光伏故障检测高分辨率无人机热红外图像细粒度含数据集4000+张

光伏发电作为清洁能源的重要组成部分,近年来得到了广泛应用。然而,随着光伏电站规模的扩大,光伏组件在运行过程中可能会出现各种故障,如热斑、遮挡、接线盒故障等。这些故障不仅会影响光伏电站的发电效率,还可能导致更严重的安全隐患。因此,准确、及时地检测并分类这些故…

VMware安装RHEL7.9

VMware安装 可以选择官网下载或者使用其他网盘资源下载。 需要注意的是,现在官网下载需要注册其账号。 下面是安装的详细步骤: 1.找到文件所在路径。双击打开之后,可能会出现环境初始化重启。重启即可。然后再次双击打开此软件。2.勾选《我接受许可协议中的条款》。3.选择安…