rt,思路是枚举小于10的数字后暴力求解,WA#8
错误点信息:Wrong Answer.wrong output format Unexpected end of file - int32 expected
#include<bits/stdc++.h>
using namespace std;
int n,a[55],vis[55]={},c[55]={};//single:vis,found:c
vector<int>q[15];
string str;
void dfs(int t){
if(t==min(n,9)+1){
memset(c,0,sizeof(c));
for(int i=1;i<=str.size();){
if(vis[i]){
i++;
continue;
}
if(vis[i+1])return;
int now=a[i]*10+a[i+1];
if(c[now]==1||now>n)return;
c[now]=1;
i+=2;
}
for(int i=1;i<=str.size();){
if(vis[i]){
cout<<a[i++]<<' ';
continue;
}
int now=a[i]*10+a[i+1];
cout<<now<<' ';
i+=2;
}
exit(0);
}
for(int i=0;i<q[t].size();i++){
vis[q[t][i]]=1;
dfs(t+1);
vis[q[t][i]]=0;
}
return;
}
int main(){
cin>>str;
if(str.size()<=9)n=str.size();
else n=(str.size()-9)/2+9;
for(int i=1;i<=str.size();i++){
a[i]=str[i-1]-'0';
q[a[i]].push_back(i);
}
dfs(1);
return 0;
}