892. 三维形体的表面积

传送门:https://leetcode-cn.com/contest/weekly-contest-99/problems/surface-area-of-3d-shapes/

分析:主要注意v = 0时引起周边表面积的变化

class Solution {
public:
    int surfaceArea(vector<vector<int>>& grid) {
        int area = 0;
        //up/down
        for(int i = 0; i < grid.size(); i++) {
           for(int j = 0; j < grid[0].size(); j++) {
                if(grid[i][j] > 0) area += 2; //v为0的没有表面积
           }
        }
        // cout << area << '\n';
        //left/right
        for(int j = 0; j < grid[0].size(); j++) {
            for(int i = 0; i < grid.size(); i++) {
                if(grid[i][j]) {
                    if(i == 0 || grid[i-1][j] == 0)  //最左边或左边为空
                        area += grid[i][j];
                    else area += abs(grid[i-1][j]-grid[i][j]); //相邻面积之差
                }
                else if(i && grid[i-1][j])  //当前为0但前左边一个不为0
                    area += grid[i-1][j];
            }
            if(grid[grid.size()-1][j]) area += grid[grid.size()-1][j]; //最右边的侧面
        }
        // cout << area << '\n'; 
        //front/back
        for(int i = 0; i < grid.size(); i++) {
            for(int j = 0; j < grid[0].size(); j++) {
                if(grid[i][j]) {
                    if(j == 0 || grid[i][j-1] == 0)  //最前边或前边为空
                        area += grid[i][j];
                    else area += abs(grid[i][j-1]-grid[i][j]); //相邻面积之差
                }
                else if(j && grid[i][j-1])  //当前为0但前一个不为0
                    area += grid[i][j-1];
            }
            if(grid[i][grid[0].size()-1]) area += grid[i][grid[0].size()-1]; //最后边的侧面
        }
        // cout << area << '\n'; 
        return area;
    }
};

 

### 陶晶驰串口屏与单片机通信的数据发送方法 #### 单片机侧准备 为了使陶晶驰串口屏能够向单片机发送数据,首先需要确保单片机已经配置好用于接收来自串口屏的信息。这通常涉及到初始化UART接口,并设置相应的波特率以匹配串口屏的要求[^1]。 对于基于STM32系列的单片机而言,可以通过如下方式完成基本配置: ```c // 初始化USART外设函数 void USART_Init(void){ // 配置GPIO引脚作为USART功能使用... // 设置USART参数, 如波特率为9600bps等... // 开启USART中断允许标志位... } ``` #### 串口屏编程 接着,在串口屏上定义触控区域(Touch Area),当用户点击这些预设好的按钮时,会触发相应事件并向连接着的单片机发出指定命令字符串或数值。例如,如果希望实现按下某个键后往单片机传递字符'2'的操作,则可以在串口屏编辑界面里编写类似下面这样的语句: `t0.txt=t0.txt+"2"` 这里假设`to`代表了某一个文本框对象;每当此表达式被执行一次,“2”就会被追加到该文本框的内容后面去[^3]。 实际上,更常见的是直接利用串口屏内置的功能来构建交互逻辑而无需手动拼接字符串。比如创建一个名为`Button_1`的按钮组件,并为其绑定动作——一旦检测到触摸行为就立即输出固定格式的消息至外部设备(即这里的单片机)。 #### 连接与测试 最后一步就是物理上的连线工作:将串口屏的TXD管脚接到单片机对应的RXD管脚上,同时注意两者间GND信号的地线也要相连以便形成完整的回路[^2]。此时便可通过串口助手工具或者其他手段验证整个链路上下文消息能否正常流通无误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值