眼神犀利的陪陪和小对眼Cocoa# pets - 心有所宠
s*5
1 楼
参加下面一个challenge,就是给定一系列电话号码,把每个号码对应的所有单词都按
字母顺序打印出来,并用,分隔。具体在这:
http://www.codeeval.com/open_challenges/59/
我下面的code提交就说不能通过所有的test cases,或者有warnings。谁大牛指出问题
所在!包子谢。
#include
#include
#include
#include
using namespace std;
void printWord(vector, string, string, bool&);
int main(int argc, char* argv[])
{
string pad1[10] = {"0", "1", "abc", "def", "ghi", "jkl", "mno", "pqrs",
"tuv", "wxyz"};
vector pad;
for(int i = 0; i < 10; i++)
pad.push_back(pad1[i]);
string number;
bool comma = false;
ifstream is(argv[1],ios::in);
while(!is.eof())
{
getline(is,number);
if(number.length() == 0)
continue;
else
printWord(pad,"",number,comma);
}
cout << endl;
is.close();
return 0;
}
void printWord(vector pad,string path,string number,bool& comma)
{
if(number.empty() && !comma)
{
cout << path;
comma = true;
return;
}
else if(number.empty() && comma)
{
cout << "," << path;
return;
}
if(number[0] == '-') return;
int dig = number[0]-'0', len = number.length();
for(int i = 0; i < pad[dig].length(); i++)
printWord(pad,path+pad[dig][i],number.substr(1,len-1),comma);
}
字母顺序打印出来,并用,分隔。具体在这:
http://www.codeeval.com/open_challenges/59/
我下面的code提交就说不能通过所有的test cases,或者有warnings。谁大牛指出问题
所在!包子谢。
#include
#include
#include
#include
using namespace std;
void printWord(vector
int main(int argc, char* argv[])
{
string pad1[10] = {"0", "1", "abc", "def", "ghi", "jkl", "mno", "pqrs",
"tuv", "wxyz"};
vector
for(int i = 0; i < 10; i++)
pad.push_back(pad1[i]);
string number;
bool comma = false;
ifstream is(argv[1],ios::in);
while(!is.eof())
{
getline(is,number);
if(number.length() == 0)
continue;
else
printWord(pad,"",number,comma);
}
cout << endl;
is.close();
return 0;
}
void printWord(vector
{
if(number.empty() && !comma)
{
cout << path;
comma = true;
return;
}
else if(number.empty() && comma)
{
cout << "," << path;
return;
}
if(number[0] == '-') return;
int dig = number[0]-'0', len = number.length();
for(int i = 0; i < pad[dig].length(); i++)
printWord(pad,path+pad[dig][i],number.substr(1,len-1),comma);
}