#include <stdio.h>
#include <string.h>
int main()
{
int n,m,a,b,c,d,k,i,j,ans,w;
char s[51],f[7]="~!@#$%^";
scanf("%d",&n);
while(n--){
a=b=c=d=k=ans=w=0;
scanf("%s",s);
m=strlen(s);
if(m<8||m>16){
printf("NO\n");
continue;
}
for(i=0;i<=m-1;i++){
if(s[i]>=65&&s[i]<=90){
if(a==0){
a=1;
k++;}
w++;
}
else if(s[i]>=97&&s[i]<=122){
if(b==0){
b=1;
k++;}
w++;
}
else if(s[i]>=48&&s[i]<=57){
if(c==0){
c=1;
k++;}
w++;
}
if(k==3){
printf("YES\n");
break;
}
for(j=0;j<=6;j++){
if(s[i]==f[j]){
if(d==0)
{
k++;
d=1;
}
w++;
break;
}
}
//printf("%d\n",k);
if(ans==w){
//printf("NO\n");
break;
}
ans=w;
if(k>=3){
printf("YES\n");
break;
}
}
if(k<3)printf("NO\n");
}
return 0;
}这个题要求1.长度介于8和16间2.必须在四种字符中选择3.在四种字符中选择三种以上。
每选择一种字符,相应的标记值变化
441

被折叠的 条评论
为什么被折叠?



