#include <iostream>
#include <vector>
using namespace std;
string s,o;
char ca[26]={2,2,2,3,3,3,4,4,1,1,5,5,6,6,0,7,0,7,7,8,8,8,9,9,9,0};
vector<string> w,op;
unsigned int mk,n;
void func (unsigned int d, unsigned int k, string st)
{
unsigned int i,j;
if (st.size())
{
st+=" ";
}
for (i=0; i<n; i++)
{
j=0;
while (j<w[i].size()-1 && ca[w[i][j]-'a']*1==s[j+d]-'0')
{
j++;
}
if (ca[w[i][j]-'a']*1==s[j+d]-'0')
{
if (j+d<s.size()-1)
{
func (j+d+1, k+1, st+w[i]);
}
else
{
if (mk>k+1)
{
mk=k+1;
o=st+w[i];
}
}
}
}
}
int main ()
{
unsigned int i;
cin >> s;
do
{
cin >> n;
for (i=w.size(); i<n; i++)
{
w.push_back("");
}
for (i=0; i<n; i++)
{
cin >> w[i];
}
o="No solution.";
mk=n+1;
func (0, 0, "");
op.push_back(o);
cin >> s;
}
while (s!="-1");
for (i=0; i<op.size(); i++)
{
cout << op[i] << endl;
}
}
за эффективность и правильность кода не ручаюсь, на c++ пишу всего несколько дней. но проблема в том, что на g++ всё компилится, а на visual c++ 2010 - нет. у меня лично денег на покупку visual c++ 2010 нету, а вот сайт acm.timus.ru для проверки решений использует только его. вопрос: что не так в моём коде?