发个第三题的吧
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long st;
typedef pair<int,int> P;
typedef pair<int,pair<int,int>> PP;
bool mycheck(char a,char b,char c){
if(a>b)swap(a,b);
if(b>c)swap(b,c);
if(a>b)swap(a,b);
if(a==b&&b==c)return true;
if(a+1==b&&b+1==c)return true;
return false;
}
bool check3(string &s,vector<int>& fl,int sum){
if(sum<=0)return true;
for(int i=0;i<s.size();i++)
for(int j=i+1;j<s.size();j++)
for(int k=j+1;k<s.size();k++)
if(fl[i]==0&&fl[j]==0&&fl[k]==0&&mycheck(s[i],s[j],s[k]))
{
fl[i]=1,fl[j]=1,fl[k]=1;
if(check3(s,fl,sum-3))return true;
fl[i]=0,fl[j]=0,fl[k]=0;
}
return false;
}
bool check2(string &s){
vector<int> fl(20);
for(int i=0;i<s.size();i++)
for(int j=i+1;j<s.size();j++)
if(s[i]==s[j])
{
fl[i]=1,fl[j]=1;
if(check3(s,fl,s.size()-2))return true;
fl[i]=0,fl[j]=0;
}
return false;
}
bool check(string& s){
if(s.size()==0)return false;
return check2(s);
}
int main()
{
freopen("input", "r", stdin);
string s,ans;
while(cin>>s)
{
unordered_map<char,int> um;
for(char c:s)um[c]++;
for(int i=1;i<10;i++){
string temp=s;
if(um['0'+i]>=4)continue;
temp.push_back('0'+i);
if(check(temp))ans.push_back('0'+i);
}
if(ans.size()!=0)
cout<<ans<<endl;
else cout<<0<<endl;
}
return 0;
}