同样是很水的一道题,怎么说呢,就是在不停的考察if-else,for,字符串等基础知识的用法,不厌其烦的做吧,这样基础才能更加扎实。
只要注意判断的条件就可以了,QAQ,刚开始写了个约束方程组,无奈的WA了3次,只好老老实实的写了最朴素的判定方法,就是有则
赋值1,无则不赋值,最后只需要判断是否超过3就可以了~
# include<cstdio> # include<iostream> # include<cstring> using namespace std; # define MAX 1000 char s[MAX+10]; int main(void) { int t;cin>>t; while ( t-- ) { int k1 = 0; int k2 = 0; int k3 = 0; int k4 = 0; int flag = 0; scanf("%s",s); int n = strlen(s); if ( n<8||n>16 ) { cout<<"NO"<<endl; continue; } for ( int i = 0;i < n;i++ ) { if ( s[i]>='a'&&s[i]<='z' )k1 = 1; if ( s[i]>='A'&&s[i]<='Z' )k2 = 1; if ( s[i]>='0'&&s[i]<='9' )k3 = 1; if ( s[i]=='~'||s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$'||s[i]=='%'||s[i]=='^' ) k4 = 1; } if ( k1+k2+k3+k4>=3 ) flag = 0; else flag = 1; if ( flag == 1 ) cout<<"NO"<<endl; else cout<<"YES"<<endl; } return 0; }