s***5 发帖数: 2136 | 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);
} | H****r 发帖数: 2801 | 2 打完一个号码的组合以后多输出一个std::endl就好了
【在 s***5 的大作中提到】 : 参加下面一个challenge,就是给定一系列电话号码,把每个号码对应的所有单词都按 : 字母顺序打印出来,并用,分隔。具体在这: : http://www.codeeval.com/open_challenges/59/ : 我下面的code提交就说不能通过所有的test cases,或者有warnings。谁大牛指出问题 : 所在!包子谢。 : #include : #include : #include : #include : using namespace std;
| H****r 发帖数: 2801 | 3 通过的输出结果见附件
【在 s***5 的大作中提到】 : 参加下面一个challenge,就是给定一系列电话号码,把每个号码对应的所有单词都按 : 字母顺序打印出来,并用,分隔。具体在这: : http://www.codeeval.com/open_challenges/59/ : 我下面的code提交就说不能通过所有的test cases,或者有warnings。谁大牛指出问题 : 所在!包子谢。 : #include : #include : #include : #include : using namespace std;
| s***5 发帖数: 2136 | 4 就是这个小问题,开始把问题向复杂了,以为要全局排序。
谢了。
【在 H****r 的大作中提到】 : 打完一个号码的组合以后多输出一个std::endl就好了
| s***5 发帖数: 2136 | 5 谢了。我多输出个提示都给0分。
【在 H****r 的大作中提到】 : 通过的输出结果见附件
| H****r 发帖数: 2801 | 6 不用谢,刚好这一段时间有时间和闲心哈。话说这个题目的评分系统好像不是全对都是
0分...
【在 s***5 的大作中提到】 : 谢了。我多输出个提示都给0分。
|
|