|
[php]
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cmath>
#include <string>
#include <list>
using namespace std;
class CKeyBind
{
public:
int number;
string keys[3];
};
CKeyBind keybinds[10];
void FillChars(int i, CKeyBind& keybind)
{
char chStart = (char)int('A') + i * 3;
keybind.keys[0] = chStart;
keybind.keys[1] = chStart + 1;
keybind.keys[2] = chStart + 2;
}
void InitializeKeybinds()
{
for (int i = 0; i < 10; ++i)
{
keybinds.number = i;
FillChars(i, keybinds);
}
}
typedef list<string> stringlist;
stringlist CombineString(stringlist& s, char* sSrc)
{
stringlist li;
if (sSrc == NULL)
{
return s;
}
if (strlen(sSrc) == 1 && s.size() == 0)
{
int n = *sSrc - '0';
li.insert(li.end(), keybinds[n].keys, keybinds[n].keys + 3);
return li;
}
else
{
s = CombineString(s, sSrc + 1);
stringlist::iterator it;
for (it = s.begin(); it != s.end(); ++it)
{
int n = *sSrc - '0';
for (int i = 0; i < 3; ++i)
{
string s = *it;
s += keybinds[n].keys;
li.insert(li.end(), s);
}
}
return li;
}
return li;
}
char* s = "234";
int _tmain(int argc, _TCHAR* argv[])
{
InitializeKeybinds();
list<string> li;
list<string> listresult = CombineString(li, "2345");
list<string>::iterator it;
for (it = listresult.begin(); it != listresult.end(); ++it)
{
cout << *it << endl;
}
cout << listresult.size() << endl;
getchar();
return 0;
}
[/php] |
|