码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 每日一练6——C/C++不要二问题&&把字符串转换成整数问题


    文章目录

    • 不要二
      • 思路:
      • 代码:
    • 把字符串转换成整数
      • 思路:
      • 代码:


    不要二

    题目链接

    思路:

    本题本质就是在二维数组中每个坐标去放蛋糕,
    一个坐标位置放了蛋糕,跟他欧几里得距离为2的位置不能放蛋糕,这个就是关键点。
    对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根 。
    也就是说:如果(x1,y1)放了蛋糕,则满足 ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4的(x2,y2)不能放蛋糕。
    ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4可以进行加法表达式分解:
    1+3=4
    3+1=4
    2+2=4
    0+4=4
    4+0=4
    仔细分析前三个表达式是不可能的,因为(x1-x2) * (x1-x2)表达式结果不能等于2或3。
    也就是说(x1-x2) * (x1-x2) 和(y1-y2) * (y1-y2) 两个表达式一个等于0,一个等于4.
    可以看出:假设放蛋糕的位置是(x1,y1),则不能放蛋糕的位置(x2,y2),满足x1==x2,y1-y2==2或者x1-x2==2,y1==y2.

    1、按照输入的长和宽M和H,我们设置一个H行M列的二维数组,每个位置都初始化为1。
    2、然后依次去遍历,每次当a[i][j]位置放蛋糕时,那么就要标记a[i][j+2]和a[i+2][j]位置为0,下次过来就不能再放蛋糕了,后面为0的位置什么都不用干直接跳过。

    代码:

    #include
    #include
    using namespace std;
    
    int main()
    {
        int W = 0;
        int H = 0;
        cin >> W >> H;
    
        vector<vector<int>> vv;
        vv.resize(H);
        for (auto& v : vv)
        {
            v.resize(W, 1);
        }
    
        int count=0;
        for (int i = 0; i < H; i++)
        {
            for (int j = 0; j < W; j++)
            {
                if (vv[i][j] == 1)
                {
                    count++;
                    if (i + 2 < H)
                    {
                        vv[i + 2][j] = 0;
                    }
                    if (j + 2 < W)
                    {
                        vv[i][j + 2] = 0;
                    }
                }
                
            }
        }
    
        cout << count;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    把字符串转换成整数

    题目链接

    思路:

    解题思路比较简单,就是上次计算的结果 * 10,相当于10进制进位,然后加当前位的值。
    例如:“123”转换的结果是
    sum=0
    sum * 10+1->1
    sum * 10+2->12
    sum * 10+3->123
    本题的关键是要处理几个关键边界条件:

    1. 空字符串
    2. 正负号处理
    3. 数字串中存在非法字符

    代码:

    class Solution {
    public:
        int StrToInt(string str)
        {
            if (str.empty())
                return 0;
            int symbol = 1;
            if (str[0] == '-') //处理负号
            {
                symbol = -1;
                str[0] = '0'; //这里是字符'0',不是0
            }
            else if (str[0] == '+') //处理正号
            {
                symbol = 1;
                str[0] = '0';
            }
            int sum = 0;
            for (int i = 0; i < str.size(); ++i)
            {
                if (str[i] < '0' || str[i] > '9')
                {
                    sum = 0;
                    break;
                }
                sum = sum * 10 + str[i] - '0';
            }
            return symbol * sum;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    end

  • 相关阅读:
    【ModelArts】【训练作业】请问ModealArts平台进行训练时是否自动采用混合精度
    2022软考高项十大管理知识领域论文骨架
    [附源码]计算机毕业设计JAVA花卉销售管理系统
    〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介
    常见的垃圾回收算法有以下几种
    AT89S51编辑和烧录软件过程
    一文轻松掌握深度学习框架中的einsum
    Python 科研绘图可视化(后处理)Matplotlib - 2D彩图
    前端面试宝典React篇06 setState 是同步更新还是异步更新?
    关于订单功能的处理和分析
  • 原文地址:https://blog.csdn.net/qq_55712347/article/details/128083434
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号