每日一题

59 篇文章 0 订阅
49 篇文章 1 订阅

题目:

对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。

给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。

测试样例:
[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true

class Board {
public:
    bool checkWon(vector<vector<int> > board) {
        // write code here
       if(board[0][0]+board[1][1]+board[2][2]==3)
           return true;
       if(board[0][2]+board[1][1]+board[2][0]==3)
           return true;
       for(int i=0;i<3;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;
    }
};

现公司要开发一个业务管理系统,要求注册环节的密码需要提示用户其安全等级,密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

   一、密码长度:

   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: 安全

   大于等于70: 非常强

   大于等于 60: 强

   大于等于 50: 一般

   大于等于 25: 弱

   大于等于0:  非常弱

对应输出为:

VERY_WEAK,

WEAK,

AVERAGE,

STRONG,

VERY_STRONG,

SECURE,

VERY_SECURE

输入描述:
输入一个自定义密码

输出描述:
输出对应安全等级
示例1
输入
dgsayd$%12
输出
SECURE

#include <iostream>
#include <string>

using namespace std;


int Is_letter_sum(string& s)
{
	int count = 0;
	int count1 = 0;
	for (auto e : s)
	{
		if (e >= 'a' && e <= 'z')
			count++;
		else if (e >= 'A' && e <= 'Z')
			count1++;
	}
	if ((count == 0 && count1 != 0) || (count == 0 && count1 != 0))
		return 10;
	else if (count > 0 && count1 > 0)
		return 20;
	else	
		return 0;
}

int  Is_symbol_sum(string& s)
{
	int count = 0;
	for (auto e : s)
	{
		if ((e >= '!' && e <= '/') || (e >= ':' && e <= '@')
			|| (e >= '[' && e <= '`') || (e >= '{' && e <= '~'))
			count++;
	}
	if (count == 0)
		return 0;
	else if (count == 1)
		return 10;
	else 
		return 25;
}
int Is_number_sum(string& s)
{
	int count = 0;
	for (auto e : s)
	{
		if (e >= '0' && e <= '9')
			count++;
	}
	if (count == 0)
		return 0;
	else if (count == 1)
		return 10;
	else
		return 20;
}
int len_sum(string& s)
{
	int len = s.size();
	if (len < 5)
		return 5;
	else if (len < 8)
		return 10;
	else
		return 25;
}
int Reward(string& s)
{
	if (Is_letter_sum(s) == 10 && Is_number_sum != 0)
		return 2;
	if (Is_letter_sum(s) == 10 && Is_number_sum(s) != 0 && Is_symbol_sum(s) != 0)
		return 3;
	if (Is_letter_sum(s) == 25 && Is_number_sum(s) != 0 && Is_symbol_sum(s) != 0)
		return 5;
	else
		return 0;
}

int score(string& s)
{
	return Is_symbol_sum(s) + Is_letter_sum(s)
		+ Is_number_sum(s) + len_sum(s) + Reward(s);
}
int main() 
{

	string s;
	cin >> s;

	int temp = score(s);
	if (temp >= 0 && temp < 25)
		cout << "VERY_WEAK" << endl;
	if (temp >= 25 && temp < 50)
		cout << "WEAK" << endl;
	if (temp >= 50 && temp < 60)
		cout << "AVERAGE" << endl;
	if (temp >= 60 && temp < 70)
		cout << "STRONG" << endl;
	if (temp >= 70 && temp < 80)
		cout << "VERY_STRONG" << endl;
	if (temp >= 80 && temp < 90)
		cout << "SECURE" << endl;
	if(temp >= 90)
		cout << "VERY_SECURE" << endl;

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值