day10—编程题

文章目录

  • 1.第一题
    • 1.1题目
    • 1.2思路
    • 1.3解题
  • 2.第二题
    • 2.1题目
    • 2.2涉及的相关知识
    • 2.3思路
    • 2.4解题

1.第一题

1.1题目

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

1.2思路

  1. 检查每一行的个数是否可以取胜
  2. 检查每一列的个数是否可以取胜
  3. 检查主对角线的个数是否可以取胜
  4. 检查副对角线的个数是否可以取胜

1.3解题

import java.util.*;
public class Board {
    public boolean checkWon(int[][] board) {
        int N = board.length;
        int sum = 0;
        //检查每一行的个数是否可以获胜
        for (int i = 0; i < N; i++) {
            //计算完每一行后sum要清零
            sum = 0;
            for (int j = 0; j < N; j++) {
                sum += board[i][j];
            }
            if (sum == N) {
                return true;
            }
        }
        //检查每一列的个数是否可以获胜
        for (int i = 0; i < N; i++) {
            //计算完每一列后sum要清零
            sum = 0;
            for (int j = 0; j < N; j++) {
                sum += board[j][i];
            }
            if (sum == N) {
                return true;
            }
        }
        //检查主对角线的个数是否可以获胜
        sum = 0;
        for (int i = 0; i < N; i++) {
            sum += board[i][i];
            if (sum == N) {
                return true;
            }
        }
        //检查副对角线的个数是否可以获胜
        sum = 0;
        for (int i = 0; i < N; i++) {
            sum += board[i][N - i - 1];
            if (sum == N) {
                return true;
            }
        }
        //以上四个方式都不可以
        return false;
    }
}

2.第二题

2.1题目

描述:
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
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
请根据输入的密码字符串,进行安全评定
输入描述:
输入一个string的密码
输出描述:
输出密码等级

2.2涉及的相关知识

熟悉阿斯克码表:
大写字母的阿斯克码值为65-90
小写字母的阿斯克码值为97-122
数字的阿斯克码值为48-57

2.3思路

分别统计数字字母符号的得分,然后加上奖励的得分,最后进行评定

2.4解题

import java.util.Scanner;
public class Main {
    //计算密码长度的得分
    public static int getLen(String str) {
        if (str.length() <= 4) {
            return 5;
        } else if (str.length() >= 8) {
            return 25;
        } else {
            return 10;
        }
    }
    //计算字母的得分
    public static int getChar(String str) {
        int big = 0;
        int small = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) >= 65 && str.charAt(i) <= 90) {
                big++;
            } else if (str.charAt(i) >= 97 && str.charAt(i) <= 122) {
                small++;
            }
        }
        if (big == 0 && small == 0) {
            return 0;
        } else if (big > 0 && small > 0) {
            return 20;
        } else {
            return 10;
        }
    }
    //计算数字的得分
    public static int getNum(String str) {
        int num = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) - '0' >= 0 && str.charAt(i) - '0' <= 9) {
                num++;
            }
        }
        if (num == 1) {
            return 10;
        } else if (num > 1) {
            return 20;
        } else {
            return 0;
        }
    }
    //计算符号得分
    public static int getSys(String str) {
        int num = 0;
        for (int i = 0; i < str.length(); i++) {
            if (!(str.charAt(i) >= 65 && str.charAt(i) <= 90) && !(str.charAt(i) >= 97 && str.charAt(i) <= 122) && !(str.charAt(i) - '0' >= 0 && str.charAt(i) - '0' <= 9) ) {
                num++;
            }
        }
        if (num == 1) {
            return 10;
        } else if (num > 1) {
            return 25;
        } else {
            return 0;
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int sum1 = getLen(str);
        int sum2 = getChar(str);
        int sum3 = getNum(str);
        int sum4 = getSys(str);
        int sum = 0;
        //统计最终得分
        if(sum2 == 20 && sum3 >= 10 && sum4 >= 10){
            sum = sum1 + sum2 + sum3 + sum4 + 5;
        }else if(sum2 == 10 && sum3 >= 10 && sum4 >= 10){
            sum = sum1 + sum2 + sum3 + sum4 + 3;
        }else if(sum2 == 10 && sum3 >= 10){
            sum = sum1 + sum2 + sum3 + sum4 + 2;
        }else {
            sum = sum1 + sum2 + sum3 + sum4;
        }
        //输出最终结果
        if(sum >= 90){
            System.out.println("VERY_SECURE");
        }else if(sum >= 80){
            System.out.println("SECURE");
        }else if(sum >= 70){
            System.out.println("VERY_STRONG");
        }else if(sum >= 60){
            System.out.println("STRONG");
        }else if(sum >= 50){
            System.out.println("AVERAGE");
        }else if(sum >= 25){
            System.out.println("WEAK");
        }else {
            System.out.println("VERY_WEAK");
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为了开放互联,明道云做了十件事

本文来自明道云资深研发经理孙伟&#xff0c;在明道云2022年秋季伙伴大会活动演讲&#xff0c;经校对编辑后整理为演讲精华。 一、开放没有选择 很多客户选择我们的一个重要原因&#xff0c;是明道云所能提供的产品开放能力。开放其实是没有选择的&#xff0c;坦白来讲&#…

SM3哈希算法的FPGA实现 I

SM3哈希算法的FPGA实现 I SM3哈希算法的FPGA实现 I一、什么是SM3哈希算法&#xff1f;二、SM3哈希算法的具体内容1、填充2、迭代与压缩3、计算拼凑值三、参考文档语言 &#xff1a;verilog 仿真工具&#xff1a; Modelsim EDA工具&#xff1a;quartus II 一、什么是SM3哈希算法…

【Unity 手写PBR】Build-in管线:实现间接光部分

写在前面 直接光昨天已经实现了&#xff1a;【Unity Shader】Build-in管线实现PBR&#xff1a;直接光部分&#xff0c;今天趁热打铁&#xff0c;补完剩下的间接光计算。 1 补一个法线纹理 突然法线直接光部分忽略了法线纹理应用的部分&#xff0c;这当然也是不可或缺的部分&a…

基于springboot实现家政服务管理平台【源码+论文】

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 摘要 随着家政服务行…

《Netty》从零开始学netty源码(十七)之AbstractUnsafe

NioServerSocketChannel的父类AbstractChannel调用newUnsafe方法创建AbstractNioUnsafe&#xff0c;newUnsafe直接调用NioMessageUnsafe的无参构造函数创建实例&#xff0c;该构造函数是java默认的构造函数&#xff0c;过程如下&#xff1a; NioMessageUnsafe的结构图如下&am…

2023年湖北省建筑八大员(建设厅七大员)报考流程和拿证流程来咯!

2023年湖北省建筑八大员&#xff08;建设厅七大员&#xff09;报考已经开始&#xff0c;想要快速拿证的联系甘建二 湖北省建筑八大员报名和拿证简单吗&#xff1f;怎么报考&#xff1f;甘建二告诉你 1、湖北省建筑八大员建设厅七大员考试岗位&#xff1a;施工员、质量员、材料员…

推荐一款自动生成财务报表分析的软件

财务报表能够清晰的反映一个企业的经营状况&#xff0c;通过三大财务报表的资产负债表、利润表、现金流量表&#xff0c;能够清晰的揭示企业经营中存在的问题&#xff0c;也是税务局要求企业报税的必备财务报表。但是&#xff0c;会计手工编制财务报表&#xff0c;费时费力&…

中介变量、调节变量与协变量

在平时看论文过程中偶会接触到这几个概念&#xff0c;然而都没想过弄明白&#xff0c;每次总觉得只要看明白个大概反正自己又不用这种方法…作为科研人&#xff0c;还是应该保持谦逊&#xff0c;保持学习 一、中介变量 1.概念 中介变量&#xff08;mediator&#xff09;是自…

人事文件签署单调、重复、繁重?君子签电子合同提升HR工作质效

人事文件作为企业管理中最常见、最频繁也是最常用的签署文件&#xff0c;使用安全合规、高效便捷的电子化签署方式&#xff0c;可以帮助HR从大量单调、重复、繁重的人事管理事务中解放出来&#xff0c;优化人事管理流程&#xff0c;提升管理效率。 君子签围绕企业员工“招聘、入…

Ajax:服务器的基本概念与初识Ajax

Ajax&#xff1a;服务器的基本概念与初识Ajax Date: January 19, 2023 目标 能够知道和服务器相关的基本概念 能够知道客户端和服务器通信的过程 能够知道数据也是一种资源 能够说出什么是Ajax以及应用场景 能够使用jQuery中的Ajax函数请求数据 能够知道接口和接口文档的…

怎么将pdf压缩?pdf文件如何压缩?

pdf文件如果过大的话&#xff0c;容易导致传送失败&#xff0c;最简单的办法就是通过pdf在线压缩的方法去将pdf压缩&#xff08;https://www.yasuotu.com/pdfyasuo&#xff09;&#xff0c;但是一般的压缩软件会损害dpf文件质量&#xff0c;所以有没有pdf无损压缩的方法呢&…

即时零售:不可逆的进化

“人们经常问我&#xff0c;这个世界还是平的吗&#xff1f;我经常跟他们说&#xff0c;亲爱的&#xff0c;它真的是平的&#xff0c;比以前更平了。”2021年3月&#xff0c;《世界是平的》作者托马斯弗里德曼在演讲时说。如他所说&#xff0c;尽管逆全球化趋势加剧&#xff0c…

【WEB前端进阶之路】 HTML 全路线学习知识点梳理(下)

前言 本文是HTML零基础小白学习系列的第三篇文章&#xff0c;点此阅读 上一篇文章 文章目录前言十五.HTML布局1.使用div元素添加网页布局2.使用table元素添加网页布局十六.HTML表单和输入1.文本域2.密码字段3.单选按钮4.复选框5.提交按钮十七.HTML框架1.iframe语法2.iframe设置…

Air700E开发板|移芯EC618|4G Cat.1模组:概述及PinOut

文章目录基础资料概述主要功能外设分布PinOut&#xff08;管脚定义&#xff09;管脚功能说明固件升级正常开机模式&#xff1a;下载模式&#xff1a;IO 电平选择基础资料 Air700E文档中心 概述 EVB-Air700E 开发板是合宙通信推出的基于 Air700E 模组所开发的&#xff0c;包含…

vue3+SpringBoot+postgresql 项目前后端传参

【项目大纲】&#xff1a;vue3SpringBootpostgresql 简单实现项目前后端传参&#xff1a; 使用postgresql数据库&#xff0c;前端使用vue3vitets&#xff0c;后端使用SpringBoot框架。目录 一、postgresql数据库 二、vue3vite部分 1 main.ts 2 App.vue 3 myTable.vue测试页…

Java 接口过滤为null 的字段

一、问题描述今天在大C的同学找过来给我们提了个技术需求&#xff0c;让我们将接口里返回的字段全不做一下处理&#xff0c;若字段值为 "null" 的时候就不要返回了&#xff0c;他们APP会崩溃。what ? 我想大家立刻马上会冒出这样一个问题之前不是好好的么这么突然就…

19. 添加异步日志——3.继续完善

1.添加日志滚动功能。 为了防止日志文件过大&#xff0c;我们在日志文件大小到达预定的大小后&#xff0c;就要新创建一个日志文件来使用,或者通过时间&#xff08;每天零点&#xff09;去新建一个文件。 一个典型的日志文件的文件名如下&#xff1a; logfile_test.20221122…

限流的几种方案

文章目录 限流基本概念 QPS和连接数控制传输速率黑白名单分布式环境 限流方案常用算法 令牌桶算法漏桶算法滑动窗口 常用的限流方案 Nginx限流中间件限流限流组件合法性验证限流Guava限流网关层限流 从架构维度考虑限流设计 具体的实现限流的手段&#xff1a; Tomcat限…

Windows Server 2016 中文版、英文版下载 (updated Mar 2023)

Windows Server 2016 Version 1607&#xff0c;2023 年 3 月更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2016/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 本站将不定期发布官方原版风格月度更…

面向行业无线追踪技术解决方案:室内无线动态追踪

随着智能穿戴等嵌入式设备和移动通信技术的发展&#xff0c;RSS被广泛关注。目前&#xff0c;GPS和北斗定位系统(BeiDou Navigation Satellite System)是最广为人知的定位系统&#xff0c;这些系统在户外定位方面表现非常好。然而&#xff0c;由于许多原因(主要是卫星与接收器之…
最新文章