当前位置:   article > 正文

【牛客】HJ87 密码强度等级 CM62 井字棋

hj87 密码强度等级

题目一:密码强度等级

题目链接:密码强度等级_牛客题霸_牛客网 (nowcoder.com)

本题主要考察C语言中逻辑分支语句,基本语句以及对各种特殊字符 ,ASCII值以及条件表达中的逻辑运算符关系运算符各自功能的理解,以及基本使用,根据不同的条件,进入不同的分支,统计求和

解题思路:

1、先统计大小写字母,数字,以及特殊字符的个数

2、再对题目给的限定条件累加求和

代码实现:

  1. #include<iostream>
  2. using namespace std;
  3. int string_count( const string& str)
  4. {
  5. int digit=0,symbol=0;
  6. int lower=0,upper=0,character=0;
  7. int sum=0;
  8. for(auto ch:str)
  9. {
  10. if(ch>='a'&&ch<='z')
  11. {
  12. lower++;
  13. character++;
  14. }
  15. else if(ch>='A'&&ch<='Z')
  16. {
  17. upper++;
  18. character++;
  19. }
  20. else if(ch>='0'&&ch<='9')
  21. digit++;
  22. if((ch>=0x21&&ch<=0x2F)||
  23. (ch>=0x3A&&ch<=0x40)||
  24. (ch>=0x5B&&ch<=0x60)||
  25. (ch>=0x7B&&ch<=0x7E))
  26. symbol++;
  27. }
  28. //str字符长度分数
  29. if(str.size()>=8)
  30. sum+=25;
  31. else if (str.size()>=5&&str.size()<=7)
  32. sum+=10;
  33. else if (str.size()<=4)
  34. sum+=5;
  35. //计算字母分数
  36. if(lower>0&&upper>0)
  37. sum+=20;
  38. else if (lower==character||upper==character)
  39. sum+=10;
  40. //计算数字分数
  41. if(digit>1)
  42. sum+=20;
  43. else if (digit==1)
  44. sum+=10;
  45. //计算字符分数
  46. if(symbol>1)
  47. sum+=25;
  48. else if (symbol==1)
  49. sum+=10;
  50. if(lower>0&&upper>0&&digit>0&&symbol>0)
  51. sum+=5;
  52. else if((lower>0||upper>0)&&digit>0&&symbol>0)
  53. sum+=3;
  54. else if((lower>0||upper>0)&&digit>0&&symbol==0)
  55. sum+=2;
  56. return sum;
  57. }
  58. int main()
  59. {
  60. string str;
  61. while(cin>>str)
  62. {
  63. int score=string_count(str);
  64. if(score>=90){
  65. cout<<"VERY_SECURE"<<endl;
  66. }
  67. else if(score>=80){
  68. cout<<"SECURE"<<endl;
  69. }
  70. else if(score>=70) {
  71. cout<<"VERY_STRONG"<<endl;
  72. }
  73. else if(score>=60) {
  74. cout<<"STRONG"<<endl;
  75. }
  76. else if(score>=50) {
  77. cout<<"AVERAGE"<<endl;
  78. }
  79. else if(score>=25) {
  80. cout<<"WEAK"<<endl;
  81. }
  82. else if(score>=0) {
  83. cout<<"VERY_WEAK"<<endl;
  84. }
  85. }
  86. }

题目二:井字棋

题目链接:井字棋_牛客题霸_牛客网 (nowcoder.com)

题目描述:

解题思路:

玩家棋子为1

整个一行相加结果为列数 就获胜了

整个一列相加结果为行数 就获胜了

正斜 board[row][row]

副斜board[row][col-1-i]

 代码实现:

  1. class Board {
  2. public:
  3. bool checkWon(vector<vector<int> > board) {
  4. // write code here
  5. int row=board.size();
  6. int col=board[0].size();
  7. //行连成排
  8. for(int i=0;i<row;i++)
  9. {
  10. int sum=0;
  11. for(int j=0;j<col;j++)
  12. {
  13. sum+=board[i][j];
  14. }
  15. if(sum==col) return true;
  16. }
  17. //列连成排
  18. for(int i=0;i<col;i++)
  19. {
  20. int sum=0;
  21. for(int j=0;j<row;j++)
  22. {
  23. sum+=board[j][i];
  24. }
  25. if(sum==row) return true;
  26. }
  27. //正斜成排
  28. int sum=0;
  29. for(int i=0;i<row;i++)
  30. {
  31. sum+=board[i][i];
  32. }
  33. if(sum==row) return true;
  34. //副斜成排
  35. sum=0;
  36. for(int i=0;i<row;i++)
  37. {
  38. sum+=board[i][col-1-i];
  39. }
  40. if(sum==row) return true;
  41. return false;
  42. }
  43. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/914589
推荐阅读
相关标签
  

闽ICP备14008679号