题目
可惜了,比赛的时候把题目想得太复杂了。该考虑的情况也都考虑到了,可惜就是拘泥于一些结果上,导致差一点就过题目了。之前打cf,也是这样。构造的思路不清晰明了。不过通过这道题,忽然发现自己的if-else的结构应用得不好, 整体的遍历也把握不好。
#include <bits/stdc++.h>
using namespace std;
#define T int T; scanf("%d", &T); while(T--)
typedef long long ll;
const int N=1010;
string str[N];
int main()
{
int n;
scanf("%d", &n);
getchar();
for(int i=0; i<n; i++){
cin>>str[i];
}
bool flag=false;
for(int i=1; i<n; i++){
if(str[i-1].size()==str[i].size()){
char c=str[i-1][0];
str[i-1][0]='9';
if(str[i-1][0]>str[i][0]){
flag=true;
break;
}
str[i-1][0]=c;
c=str[i][0];
if(str[i].size()==1){
str[i][0]='0';
} else {
str[i][0]='1';
}
if(str[i-1][0]>str[i][0]){
flag=true;
break;
}
str[i][0]=c;
}
if(flag){
break;
}
}
if(!flag){
cout<<"impossible"<<endl;
} else {
for(int i=0; i<n-1; i++){
cout<<str[i]<<" ";
}
cout<<str[n-1]<<endl;
}
return 0;
}