当前位置: 首页 > news >正文

【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级

在这里插入图片描述

1. 另类加法

给定两个int A和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。
测试样例:
1,2
返回:3
示例 1
输入
输出

思路1:
二进制0101和1101的相加
0 1 0 1
1 1 0 1
其实就是
不带进位的结果1000
和进位产生的1010相加
无进位加法: 两个二进制数异或后得到的结果
就是它们无进位相加的结果
进位: 两个二进制数按位与后左移1位
就是它们相加的进位结果
在每一轮计算中
利用异或运算符计算不进位部分
利用与运算符和左移运算符计算进位部分
并将进位部分赋值给另一个操作数
直到没有进位为止
最终,不进位部分的结果即为加法的结果
在这里插入图片描述

class UnusualAdd {
public:int addAB(int A, int B) {while (B) {int a = A ^ B;int b = (A & B) << 1; A = a;B = b;}return A;}
};

2. 走方格的方案数

请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。
注:沿棋盘格之间的边缘线行走
数据范围:
输入描述
输入两个正整数n和m,用空格隔开。(1≤n,m≤8)
输出描述
输出一行结果
示例 1
输入
2 2
输出
6

思路1: 递归
本题说的是沿着边缘线走
而非在格子里面走
第一步可以往右或往下
起始路径(0, 0)可以选择沿着
(0+1, 0)和(0, 0+1)的路径走
而(0+1, 0)和(0, 0+1)是起始路径(0, 0)的子问题
继续往下递归,用(i, j)表示当前位置
后续限制边界的向下或向右
因为不能走回头路
当向下(向右)走到边界
表示只有向右(向下)这一条路径可走
即可结束递归,无需完全走到右下角
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;int scheme(int i, int j, int n, int m)
{if (i == n || j == m)return 1;return scheme(i + 1, j, n, m) + scheme(i, j + 1, n, m);
}int main() {int n, m;while (cin >> n >> m) { cout << scheme(0, 0, n, m) << endl;}return 0;
}

思路2: 动态规划
用dp[i][j]表示到第 i 行 j 列为止的方案数
它等于到它左边的方案数
加上到它上边的方案数的总和
如果是首行或者首列就等于它旁边的方案数
没有比的选择,如果是第一个就只有1种

int main() {int n, m;while(cin >> n >> m){vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0)); //dp[i][j]表示到第i行j列为止的方案数for(int i = 0; i <= n; i++)for(int j = 0; j <= m; j++){if(i == 0 && j == 0) //最开始,一种方法dp[i][j] = 1;else if(i == 0) //行数到顶,等于旁边列的方法dp[i][j] = dp[i][j - 1];else if(j == 0) //列数到左边,等于旁边行的方法dp[i][j] = dp[i - 1][j];else //等于左边加上边的方法dp[i][j] = dp[i][j - 1] + dp[i - 1][j];}cout << dp[n][m] << endl;}return 0;
}

3. 井字棋

给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。
测试样例:
[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true
示例 1
输入
输出

思路1:
先判断两个对角线
再for循环判断横纵

class Board {
public:bool checkWon(vector<vector<int> > board) {if (board[0][0] + board[1][1] + board[2][2] == 3|| board[0][2] + board[1][1] + board[2][0] == 3)return true;for (int i = 0; i < board.size(); i++) {if (board[i][0]+board[i][1]+board[i][2] == 3)return true;if (board[0][i]+board[1][i]+board[2][i] == 3)return true;}return false;}
};

4. 密码强度等级

密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符
二、字母:
0 分: 没有字母
10 分: 密码里的字母全都是小(大)写字母
20 分: 密码里的字母符合”大小写混合“
三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字
四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号
五、奖励(只能选符合最多的那一种奖励):
2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号
最后的评分标准:
= 90: 非常安全
= 80: 安全(Secure)
= 70: 非常强
= 60: 强(Strong)
= 50: 一般(Average)
= 25: 弱(Weak)
= 0: 非常弱(Very_Weak)
对应输出为:
VERY_SECURE
SECURE
VERY_STRONG
STRONG
AVERAGE
WEAK
VERY_WEAK
请根据输入的密码字符串,进行安全评定。
注:
字母:a-z, A-Z
数字:0-9
符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)
!"#KaTeX parse error: Can't use function '\]' in math mode at position 76: …I码:0x3A~0x40) [\̲]̲^_` …@NoNoN
输出
VERY_SECURE
说明
样例的密码长度大于等于8个字符,得25分;大小写字母都有所以得20分;有两个数字,所以得20分;包含大于1符号,所以得25分;由于该密码包含大小写字母、数字和符号,所以奖励部分得5分,经统计得该密码的密码强度为25+20+20+25+5=95分。
示例 2
输入
Jl)M:+
输出
AVERAGE
说明
示例2的密码强度为10+20+0+25+0=55分。

思路1:
用好 if 和 else
对每个安全等级进行判断

#include <iostream>
using namespace std;int passwordLength(string& s) {if (s.size() >= 5 && s.size() <= 7)return 10;else if (s.size() >= 8)return 25;else return 5;
}int passwordLetter(string& s) {bool Capital = false, Lowercase = false;for (int i = 0; i < s.size(); i++) {if (s[i] >= 'A' && s[i] <= 'Z')Capital = true;else if (s[i] >= 'a' && s[i] <= 'z')Lowercase = true;}if (Capital == false && Lowercase == false)return 0;else if (Capital == true && Lowercase == true)return 20;else return 10;
}int passwordFigure(string& s) {int count = 0;for (int i = 0; i < s.size(); i++) {if (s[i] >= '0' && s[i] <= '9')count++;if (count > 1) return 20;}if (count == 0) return 0;else return 10;
}int passwordSymbol(string& s) {int count = 0;for (int i = 0; i < s.size(); i++) {if (s[i] >= 0x21 && s[i] <= 0x2F) count++;else if (s[i] >= 0x3A && s[i] <= 0x40) count++;else if (s[i] >= 0x5B && s[i] <= 0x60) count++;else if (s[i] >= 0x7B && s[i] <= 0x7E) count++;}if (count == 0) return 0;else if (count == 1) return 10;else return 25;
}int passwordAward(int Letter, int Figure, int Symbol) {if (Letter == 20 && Figure >= 10 && Symbol >=10)return 5;else if (Letter == 10 && Figure >= 10 && Symbol >=10)return 3;else if (Letter == 10 && Figure >= 10)return 2;else return 0;
}int main() {string s;cin >> s;int Length, Letter, Figure, Symbol, Award;Length = passwordLength(s);Letter = passwordLetter(s);Figure = passwordFigure(s);Symbol = passwordSymbol(s);Award = passwordAward(Letter, Figure, Symbol);int score = Length + Letter + Figure + Symbol + Award;if (score >= 90) cout << "VERY_SECURE" << endl;else if (score >= 80) cout << "SECURE" << endl;else if (score >= 70) cout << "VERY_STRONG" << endl;else if (score >= 60) cout << "STRONG" << endl;else if (score >= 50) cout << "AVERAGE" << endl;else if (score >= 25) cout << "WEAK" << endl;else if (score >= 0) cout << "VERY_WEAK" << endl;return 0;
}
class password {
public:password(string& s): _pwd(s){}void passwordLength() {if (_pwd.size() >= 5 && _pwd.size() <= 7)_score += 10;else if (_pwd.size() >= 8)_score += 25;else if (_pwd.size() <= 4) _score += 5;}void passwordLetter() {for (auto l : _pwd) {if (isupper(l)) _bigLetter = true;else if (islower(l))_smallLetter = true;}if (_bigLetter && _smallLetter)_score += 20;else if (_bigLetter || _smallLetter ) _score += 10;}void passwordFigure() {int count = 0;for (auto f : _pwd) {if (isdigit(f))  count++;}if (count >= 1) _Figure = true;if (count == 1) _score += 10;else if (count > 1) _score += 20;
}void passwordSymbol() {int count = 0;for (auto c : _pwd) {if (ispunct(c)) count++;}if (count >= 1) _Symbol = true;if (count == 1) _score += 10;else if (count > 1) _score += 25;}void passwordAward() {if (_bigLetter && _smallLetter && _Figure && _Symbol)_score += 5;else if ((_bigLetter || _smallLetter) && _Figure && _Symbol)_score += 3;else if ((_bigLetter || _smallLetter) && _Figure)_score += 2;}void getTotalScore() {passwordLength();passwordLetter();passwordFigure();passwordSymbol();passwordAward();}void _printGrade() {getTotalScore();if (_score >= 90) cout << "VERY_SECURE" << endl;else if (_score >= 80) cout << "SECURE" << endl;else if (_score >= 70) cout << "VERY_STRONG" << endl;else if (_score >= 60) cout << "STRONG" << endl;else if (_score >= 50) cout << "AVERAGE" << endl;else if (_score >= 25) cout << "WEAK" << endl;else if (_score >= 0) cout << "VERY_WEAK" << endl;}
private:string _pwd;int _score = 0;bool _bigLetter = false;bool _smallLetter = false;bool _Figure = false;bool _Symbol = false;
};int main() {string s;while (cin >> s) {password pwd(s);pwd._printGrade();}return 0;
}

相关文章:

【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级

1. 另类加法 给定两个int A和B。编写一个函数返回AB的值&#xff0c;但不得使用或其他算数运算符。 测试样例&#xff1a; 1,2 返回&#xff1a;3 示例 1 输入 输出 思路1: 二进制0101和1101的相加 0 1 0 1 1 1 0 1 其实就是 不带进位的结果1000 和进位产生的1010相加 无进位加…...

如何检查购买的Facebook账号优劣?

Facebook 是全球最受欢迎的社交网络之一,为品牌广告提供了巨大的潜力。许多公司和营销人员使用 Facebook 来推广他们的产品和服务&#xff0c;经常会购买账号。当然也分出了很多账号&#xff0c;比如个人号&#xff0c;BM号&#xff0c;广告号&#xff0c;小黑号等等。 但是,有…...

2.2.1 ROS2案例以及案例分析

1.案例需求 需求1&#xff1a;编写话题通信实现&#xff0c;发布方以某个频率发布一段文本&#xff0c;订阅方订阅消息&#xff0c;并输出在终端。 需求2&#xff1a;编写话题通信实现&#xff0c;发布方以某个频率发布自定义接口消息&#xff0c;订阅方订阅消息&#xff0c;并…...

使用 Python 访问 Windows 剪贴板

目录&#xff1a; 使用 Pyperclip 模块使用 clipboard 模块使用 tkinter 模块使用 win32clipboard 模块 使用 Python 将文本复制到剪贴板或从剪贴板读取文本是一项有用的功能&#xff0c;可以提高代码的效率&#xff0c;使不同应用程序之间的数据传输无缝衔接。 使用 Pyperclip…...

手机空号过滤的多种应用场景

手机空号过滤的应用场景主要涵盖以下几个方面&#xff0c;以下是对其应用场景的清晰归纳和分点表示&#xff1a; 电话营销场景&#xff1a; 在电话营销中&#xff0c;使用空号过滤技术可以显著提高营销效率。通过筛选有效手机号码&#xff0c;避免拨打无效号码&#xff0c;每次…...

[Vue学习]生命周期及其各阶段举例

当我们运行vue项目&#xff0c;看到了屏幕上显示的界面&#xff0c;看到了界面上显示的数据和标签&#xff0c;之后将这个界面叉掉&#xff0c;这一过程其实经历了一整个vue的生命周期的四个阶段&#xff0c;即创建阶段、挂载阶段、更新阶段以及销毁阶段, 而对于每个阶段的启动…...

YOLOv5改进 | 损失函数 | EIoU、SIoU、WIoU、DIoU、FocuSIoU等多种损失函数

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a; 《YOLOv5入门 …...

[leetcode]minimum-absolute-difference-in-bst 二叉搜索树的最小绝对差

. - 力扣&#xff08;LeetCode&#xff09; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(null…...

[ALSA]从零开始,使用ALSA驱动播放一个音频

前言 最近学了不少有关音频相关的&#xff0c;最近搞一下ALSA驱动 安装 参考Linux应用开发【第八章】ALSA应用开发 中提到的ALSA库及工具章节&#xff0c;本文中有比较详细的有关ALSA驱动引用程序怎么安装的&#xff0c;这里不再赘述。 关于ALSA&#xff0c;就当成一个音频…...

自动化设备上位机设计 一

目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 namespace 自动化上位机设计 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}} }namespace 自动化上位机设计 {partial class Fo…...

tampermonkey插件下载国家标准文件

#创作灵感# 最近在一个系统招标正文中看到了一些国家标准&#xff0c;想要把文章下载下来&#xff0c;方便查阅&#xff0c;但是“国家标准全文公开系统”网站只提供了在线预览功能&#xff0c;没有提供下载功能&#xff0c;但是公司又需要文件&#xff0c;在网上找了一些办法&…...

JAVA学习笔记2

一、加号使用 二、数据类型 bit&#xff1a;计算机中的最小存储单位 byte(字节):计算机中基本存储单元&#xff0c;1byte8bit 浮点数符号位指数位尾数位 浮点数默认为double类型...

Unity 解包工具(AssetStudio/UtinyRipper)

文章目录 1.UtinyRipper2.AssetStudio 1.UtinyRipper 官方地址&#xff1a; https://github.com/mafaca/UtinyRipper/ 下载步骤&#xff1a; 2.AssetStudio 官方地址&#xff1a; https://github.com/Perfare/AssetStudio 下载步骤&#xff1a;...

log4j2 对定时异步线程打印的日志进行过滤

log4j2的过滤器有&#xff1a; 官网&#xff1a;Log4j – Log4j Filters (apache.org) 本次不使用自定义的过滤器&#xff0c;使用ScriptFilter对logevent对象中的线程名称进行过滤。 具体修改如下&#xff1a; <!--控制台--><Console name"Console" tar…...

Oracle内部bug导致的19c DG备库宕机

Oracle内部bug导致的19c DG备库宕机 报错信息收集原因与受影响版本Workaround与解决办法报错信息收集 数据库版本: SQL> select banner,banner_full,banner_legacy from v$version;BANNER ----------------------------------------------------------------------------…...

2024 世界人工智能大会暨人工智能全球治理高级别会议全体会议在上海举办,推动智能向善造福全人类

2024 年 7 月 4 日&#xff0c;2024 世界人工智能大会暨人工智能全球治理高级别会议-全体会议在上海世博中心举办。联合国以及各国政府代表、专业国际组织代表&#xff0c;全球知名专家、企业家、投资家 1000 余人参加了本次会议&#xff0c;围绕“以共商促共享&#xff0c;以善…...

【算法专题--栈】用栈实现队列 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双栈 模拟 队列 &#x1f95d;栈 和 队列 的特性 &#x1f34d;具体思路 &#x1f34d;案例图解 四、总结与提炼 五、共勉 一、前言 用栈实现队列 这道题&#xff0c;可以说是--栈专题--&#xff0c;最经典的一道题&…...

2024亚太杯中文赛B题全保姆教程

B题 洪水灾害的数据分析与预测 问题 1. 请分析附件 train.csv 中的数据&#xff0c;分析并可视化上述 20 个指标中&#xff0c;哪 些指标与洪水的发生有着密切的关联&#xff1f;哪些指标与洪水发生的相关性不大&#xff1f;并 分析可能的原因&#xff0c;然后针对洪水的提前预…...

穿越光影,共赏中华瑰宝——皮影戏文化交流盛会

2024年7月3日&#xff0c;皮影不离团队的成员非常荣幸能与外国语学院的同学以及留学生一同探索中国古老而迷人的艺术形式——皮影戏。皮影戏&#xff0c;源自中国民间&#xff0c;距今已有数千年的历史&#xff0c;它不仅是光与影的魔术&#xff0c;更是文化传承的活化石。 在这…...

SQL常用经典语句大全

SQL经典语句大全 一、基础 1、说明&#xff1a;创建数据库 CREATE DATABASE database-name 2、说明&#xff1a;删除数据库 drop database dbname 3、说明&#xff1a;备份sql server — 创建 备份数据的 device USE master EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...