zzzzzz 垫风丶
左职寄蒜鸡er
关注数: 18 粉丝数: 24 发帖数: 2,708 关注贴吧数: 33
有没有大佬帮新手看看我的程序为啥过不了Oj 试了很多数了都没问题,但oj上就是显示答案错误50%,已经添加了很多细节啦,还不行,SOS,感谢 下面是程序 #include<stdio.h> int main() { int a,i,j,k,n,check,b,c,t; char num[100]; scanf("%d",&n); while(n--) //循环 {num[0]=0; scanf("%s",&num); a=strlen(num); check=1; for(i=0;i<=a-1;i++) //判断是否有0 { if(num[i]-48==0) check=0; } switch(num[0]-48) //判断第一个与第二个数字的关系是否满足密码需求 { case 1: if(num[1]-48==3||num[1]-48==9||num[1]-48==7) check=0; break; case 2: if(num[1]-48==8) check=0; break; case 3: if(num[1]-48==1||num[1]-48==9||num[1]-48==7) check=0; break; case 4: if(num[1]-48==6) check=0; break; case 5: break; case 6: if(num[1]-48==4) check=0; break; case 7: if(num[1]-48==3||num[1]-48==9||num[1]-48==1) check=0; break; case 8: if(num[1]-48==2) check=0; break; case 9: if(num[1]-48==3||num[1]-48==1||num[1]-48==7) check=0; break; } for(i=1;i<a;i++) //判断第二个以后的数字是否满足需求 { switch(num[i]-48) { case 1: for(k=0,j=0;j<i;j++) { if(num[j]-48==2||num[j]-48==5||num[j]-48==4) k=1; } if(num[i+1]-48==3||num[i+1]-48==9||num[i+1]-48==7) { if(k==0) check=0; } break; case 2: for(k=0,j=0;j<i;j++) { if(num[j]-48==5) k=1; } if(num[i+1]-48==8) { if(k==0) check=0; } break; case 3: for(k=0,j=0;j<i;j++) { if(num[j]-48==2||num[j]-48==5||num[j]-48==6) k=1; } if(num[i+1]-48==1||num[i+1]-48==9||num[i+1]-48==7) { if(k==0) check=0; } break; case 4: for(k=0,j=0;j<i;j++) { if(num[j]-48==5) k=1; } if(num[i+1]-48==6) { if(k==0) check=0; } break; case 5: break; case 6: for(k=0,j=0;j<i;j++) { if(num[j]-48==5) k=1; } if(num[i+1]-48==4) { if(k==0) check=0; } break; case 7: for(k=0,j=0;j<i;j++) { if(num[j]-48==4||num[j]-48==5||num[j]-48==8) k=1; } if(num[i+1]-48==3||num[i+1]-48==9||num[i+1]-48==1) { if(k==0) check=0; } break; case 8: for(k=0,j=0;j<i;j++) { if(num[j]-48==5) k=1; } if(num[i+1]-48==2) { if(k==0) check=0; } break; case 9: for(k=0,j=0;j<i;j++) { if(num[j]-48==8||num[j]-48==5||num[j]-48==6) k=1; } if(num[i+1]-48==3||num[i+1]-48==1||num[i+1]-48==7) { if(k==0) check=0; } } break; } if(a<=3||a>9) //确保数字个数在4--9之间 check=0; for(b=1;b<a;b++) //确保没有重复的数字 {for(c=0;c<a-b;c++) { if(num[c]>num[c+1]) { t=num[c]; num[c]=num[c+1]; num[c+1]=t; } } } for(i=0;i<a-1;i++) { if(num[i]==num[i+1]) check=0; } if(check) printf("Yes\n"); else printf("No\n"); } return 0; }
首页 1 2 下一页