OR132. 车辆限行
描述
输入一个或多个车牌号码,多个以逗号分割开,再输入想查询的日期(数字,周几),输出该日期限行的车牌号
车牌号码有以下要求,只要取后五位,如:AD123,12101,车牌号不可能全是字母。
*现在对尾号进行限制:尾号为1,9则周一限行,尾号为2,8则周二限行,尾号为3,7则周三限行 尾号为4,6则周四限行,尾号为5,0的周五限行,周六周日不限行。
*尾号不为数字,则看第4位是否是数字,如果第4位还不是 数字,继续看第3位,以此下去,直到找到有数字的时候止.
*由于用户不熟悉系统,有可能输入错误车牌,如车牌不满5位或大于5位、车牌全是字母、没用逗号分割等,如有输入错误情况 一律返回error
*如输入没有问题则返回限行的车牌号,如没有,刚返回none
输入描述
一个或多个车牌号码输出描述
限行的车牌号,如没有限行的则返回none示例1
输入:
Y008U,T8899 2
输出:
Y008U
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-06-24
#include<stdio.h> int main() { int i,j,d,n,l; char str[100][100]; while(scanf("%s",str[n++])!=EOF); scanf("%d",&d); // printf("%d",n); for(i=0;i<n;i++) { l=strlen(str[i]); if(l<5||l>5) { printf("error"); return 0; } for(j=0;j<l;j++) { if(d==1&&(str[i][l-1-j]==1||str[i][l-1-j]==9)) { printf("%s",str[i]); break; } if(d==2&&(str[i][l-1-j]==2||str[i][l-1-j]==8)) { printf("%s",str[i]); break; } if(d==3&&(str[i][l-1-j]==3||str[i][l-1-j]==7)) { printf("%s",str[i]); break; } if(d==4&&(str[i][l-1-j]==4||str[i][l-1-j]==6)) { printf("%s",str[i]); break; } if(d==5&&(str[i][l-1-j]==5||str[i][l-1-j]==0)) { printf("%s",str[i]); break; } if(d==6||d==7) { printf("%s",str[i]); } } if(j==l) printf("none"); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2020-08-23
#include<stdio.h> #include<stdlib.h> #include<string.h> int panduan(char a,int n) { if(n==1) if(a=='1'||a=='9') return 1; else return 0; if(n==2) if(a=='2'||a=='8') return 1; else return 0; if(n==3) if(a=='3'||a=='7') return 1; else return 0; if(n==4) if(a=='4'||a=='6') return 1; else return 0; if(n==5) if(a=='5'||a=='0') return 1; else return 0; } int main() { char str[10000]={'\0'}; char s[6]={'\0'}; int i=0,j,r; scanf("%s",str); int n; scanf("%d",&n); int len=strlen(str); int t=(len+1)/6; if((len+1)%6!=0) { printf("error\n"); return 0; } int num; for(i=5;i<=len;i+=6) { if(str[i]!=',') { printf("error\n"); return 0; } else { num=0; for(j=i-1;j>=i-5;j--) { if(str[j]>='a'&&str[j]>='z'||str[j]>='A'&&str[j]>='Z') num++; } if(num==5) { printf("error\n"); return 0; } } } int count=0; for(i=5;i<=len;i+=6) { for(j=i-1;j>=i-5;j--) { if(str[j]>='0'&&str[j]<='9') { r=panduan(str[j],n); //printf("___r__i__%d %d\n",r,i); if(r==1) { strncpy(s,&str[i-5],5); if(count==0) printf("%s",s); else printf(",%s",s); count++; //printf("____i__%d \n",i); } else break; } } if(i==len) printf("\n"); } if(count==0) { printf("none\n"); return 0; } return 0; }