赞
踩
本题主要考察C语言中逻辑分支语句,基本语句以及对各种特殊字符 ,ASCII值以及条件表达中的逻辑运算符关系运算符各自功能的理解,以及基本使用,根据不同的条件,进入不同的分支,统计求和
1、先统计大小写字母,数字,以及特殊字符的个数
2、再对题目给的限定条件累加求和
- #include<iostream>
- using namespace std;
-
- int string_count( const string& str)
- {
- int digit=0,symbol=0;
- int lower=0,upper=0,character=0;
- int sum=0;
- for(auto ch:str)
- {
-
- if(ch>='a'&&ch<='z')
- {
- lower++;
- character++;
- }
- else if(ch>='A'&&ch<='Z')
- {
- upper++;
- character++;
- }
- else if(ch>='0'&&ch<='9')
- digit++;
-
- if((ch>=0x21&&ch<=0x2F)||
- (ch>=0x3A&&ch<=0x40)||
- (ch>=0x5B&&ch<=0x60)||
- (ch>=0x7B&&ch<=0x7E))
- symbol++;
- }
-
- //str字符长度分数
- if(str.size()>=8)
- sum+=25;
- else if (str.size()>=5&&str.size()<=7)
- sum+=10;
- else if (str.size()<=4)
- sum+=5;
-
- //计算字母分数
- if(lower>0&&upper>0)
- sum+=20;
- else if (lower==character||upper==character)
- sum+=10;
-
- //计算数字分数
- if(digit>1)
- sum+=20;
- else if (digit==1)
- sum+=10;
-
- //计算字符分数
- if(symbol>1)
- sum+=25;
- else if (symbol==1)
- sum+=10;
-
- if(lower>0&&upper>0&&digit>0&&symbol>0)
- sum+=5;
- else if((lower>0||upper>0)&&digit>0&&symbol>0)
- sum+=3;
- else if((lower>0||upper>0)&&digit>0&&symbol==0)
- sum+=2;
-
- return sum;
- }
- int main()
- {
- string str;
- while(cin>>str)
- {
- int score=string_count(str);
- 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;
- }
- }
- }
解题思路:
玩家棋子为1
整个一行相加结果为列数 就获胜了
整个一列相加结果为行数 就获胜了
正斜 board[row][row]
副斜board[row][col-1-i]
- class Board {
- public:
- bool checkWon(vector<vector<int> > board) {
- // write code here
- int row=board.size();
- int col=board[0].size();
-
- //行连成排
- for(int i=0;i<row;i++)
- {
- int sum=0;
- for(int j=0;j<col;j++)
- {
- sum+=board[i][j];
- }
- if(sum==col) return true;
- }
- //列连成排
- for(int i=0;i<col;i++)
- {
- int sum=0;
- for(int j=0;j<row;j++)
- {
- sum+=board[j][i];
- }
- if(sum==row) return true;
- }
- //正斜成排
- int sum=0;
- for(int i=0;i<row;i++)
- {
- sum+=board[i][i];
- }
- if(sum==row) return true;
- //副斜成排
- sum=0;
- for(int i=0;i<row;i++)
- {
- sum+=board[i][col-1-i];
- }
- if(sum==row) return true;
-
- return false;
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。