#include <cstdio>
using namespace std;
int rmb[110]={0,1,5,-1,-1,2,-1,-1,8,-1};//存放每个数反过来,如rmb[15]=21,如果非法是-1
int f(int num){
int ret=0;
while(num){
int tmp=num%10;
if(rmb[tmp]==-1) return -1;
ret=ret*10+rmb[tmp];
num/=10;
}
return ret;
}
void init(){
for(int i=10;i<=100;i++) rmb[i]=f(i);//生成rmb
}
int h,m,a,b;
int mian(){
scanf("%d%d",&h,&m);
scanf("%02d:%02d",&a,&b);
//printf("%d %d\n",a,b);
for(int i=a;i<h;i++){
for(int j=(i==a?b:0);j<m;j++){//枚举时间
if(rmb[i]==-1||rmb[j]==-1) continue;//非法就下一个
if(rmb[j]>=h||rmb[i]>=m) continue;//超出时间下一个
printf("%02d:%02d",rmb[j],rmb[i]);//输出走人
return 0;
}
}
return printf("00:00"),0;//枚举到最后输出00:00
}
int main(){
int T;
scanf("%d",&T);
init();
//for(int i=1;i<=100;i++) printf("%d %d\n",i,rmb[i]);
while(T--)
mian(),puts("");
return 0;
}
请问这个代码有什么问题吗?连样例都过不了,是我理解错题意了吗?