2025年3月,stemaC++,编程题三月第四周和第五周stem问题

编程题第二题
A、B、C三人之间进行了若干场一对一的乒乓球比赛。比赛规则如下,
题目描述:
1)每场比赛为一对一形式,只有两人参与;

2)每场比赛的胜者加 10 分,败者扣 10 分;

3)初始时,三人的分数均为0分。

已知比赛结束后 A和 B的最终分数,请根据规则判断C的分数是否大于0,并输出 C的最终分数。


一行输入两个整数(-1000≤整数≤1000),分别表示比赛结束后A和B的分数,整数之间以一个空格隔开。
输入述

输出一个整数,表示C的分数

第一问,比赛第一轮到最后一轮,三人分数相加的结果?

编程题第三题讲解:
有n座山峰排成一行,从左到右依次编号为1至n、已知每座山峰的高度,请找出满足以下所有山峰中编号最大的那个。
条件:该山峰的左侧(即所有编号比它小的山峰)至少存在一座山峰的高度小于它
如果存在这样的山峰,输出其编号;否则,输出-1.
例1:n=5,从左到右每座山峰的高度依次为140,200,120,150,110;其中2号和4号山峰都满足条件,编号最大的是4号山峰。
例2:n=3,从左到右每座山峰的高度依次为 190,105,82,没有满足条件的山峰。


第一行输入一个整数n(1<=n<=500)表示山峰的数量
第二行输入 n 个整数 (1<=整数<=5000),表示从左到右每座山峰的高度,整数之间用空格隔开
输出一个整数,表示满足题目条件的最大山峰编号,如果没有满足条件的山峰泽输出-1

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int h[500];
    for (int i = 0; i < n; i++) {
        cin >> h[i];
    }
    int m = -1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < i; j++) {
            if (h[j] < h[i]) {
                m = i + 1;
            }
        }
    }
    cout << m;
    return 0;
}    

想做山峰那道题先会解下面的题:

步骤一:
100 30 22  50 200

上面五个数字,如果存在 左边大于右边的数字,把它输出

步骤二:

输出满足条件的数字编号

步骤三:

把声明五个数字变成输入

如果有困难,那就创建一个数组,输入两个数字,输出这两个数字

步骤四:

把输入几个数字设置成变了n

把输出值变成下标,变成i+1

练习:

创建一个长度为99的整数数组,

输出,数组的每个位置数字是几

代码解释:

6. `a=a+'A'-'a';`:这里试图将小写字母转换为大写。假设输入的是小写字母,比如a,那么ASCII码中'a'是97,'A'是65,'A'-'a'的结果是-32。所以,如果输入的是小写字母,加上这个差值就会得到对应的大写字母。例如,'a' + (-32) = 65,即'A'。

该程序存在缺陷

第一,只能解决一个小写字母,比如a,请大家完善该程序,让他能解决abnvx一起变成大写

第二,输入大写,它会报错,解决这个问题

  1. 潜在问题

    • 非小写字母输入:若输入大写字母(如 B),计算结果为 B - 32 = 66 - 32 = 34(对应字符 "),导致错误。

    • 特殊字符风险:输入数字或符号(如 5)会生成不可预测的非字母字符。

  2. 改进方案

    cpp

    复制

    #include <iostream>
    using namespace std;
    
    int main() {
        char a;
        cin >> a;
        if (a >= 'a' && a <= 'z') {  // 仅处理小写字母
            a = a - ('a' - 'A');     // 等价于 a = a - 32
        }
        cout << a;
        return 0;
    }
  3. 关键修正点

    • 增加条件判断,确保仅对小写字母进行转换。

    • 使用更清晰的表达式 a - ('a' - 'A'),提升代码可读性。

    • 移除非标准头文件 bits/stdc++.h,改用必要的 <iostream>

总结:原程序在小写字母转换功能上正确,但缺乏输入验证,需通过条件判断限制处理范围以避免逻辑错误。

作业:

20  13   66  请给这三个数字排序

字符串题:

或者

解题思路:

第一步,做阅读理解,把题翻译成 “人话”,它究竟问的是啥

第二步,分步解题



第三步,限定条件和注意事项最后写,比如上面的输入小写输出大写,最后再考虑,输入内容是否是大写,会不会报错,因为,及时限定条件没写对,也会给分

开始做题:

输入一个字母,

ASCII发现:a到z,是数字多少到多少

查表发现是:97到122

### PyTorch 中 Stem 的概念与实现 Stem 是指神经网络模型中的初始层,通常用于提取输入数据的基础特征。在计算机视觉领域,尤其是卷积神经网络(CNNs),stem 层负责初步处理图像数据。 对于 ResNet 类型的架构,在 PyTorch 实现中,stem 主要由几个部分组成: - 卷积层(Convolutional Layer): 使用较大尺寸的卷积核(如7x7)来捕捉低级特征[^3]。 - 批量归一化(Batch Normalization): 对每一小批量(mini-batch)的数据进行标准化操作以加速训练并稳定数值范围。 - 非线性激活函数(Rectified Linear Unit, ReLU): 应用ReLU作为激活函数引入非线性因素。 - 最大池化(Max Pooling): 减少空间维度的同时保留重要信息。 下面是一个简单的 PyTorch 代码片段展示如何构建一个典型的 CNN stem 结构: ```python import torch.nn as nn class SimpleCNNStem(nn.Module): def __init__(self): super(SimpleCNNStem, self).__init__() # 定义stem模块组件 self.stem = nn.Sequential( nn.Conv2d(in_channels=3, out_channels=64, kernel_size=7, stride=2, padding=3), nn.BatchNorm2d(num_features=64), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2, padding=1) ) def forward(self, x): return self.stem(x) # 创建实例对象 model_stem = SimpleCNNStem() print(model_stem) ``` 此段代码定义了一个名为 `SimpleCNNStem` 的类继承自 `nn.Module`, 并实现了前向传播方法 `forward()`. 构造器初始化过程中设置了顺序容器 `Sequential()` 来组合多个层形成完整的 stem 组件.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值