avatar
c*m
1
1.leetcode的手机键盘给数字,求各种字母组合的题。这题不准用递归,只用迭代该怎
么写啊?
2. 如何将一个大文件拷贝从一台机器拷贝到上千台server? 我觉得这问题是分布式应
用的replication,应该有论文探讨过这个。不知道谁有些好的idea或者知道相关的论
文?
avatar
p*2
2
第一题应该用stack和queue都可以。
avatar
l*a
3

这题不是循环吗?

【在 c*********m 的大作中提到】
: 1.leetcode的手机键盘给数字,求各种字母组合的题。这题不准用递归,只用迭代该怎
: 么写啊?
: 2. 如何将一个大文件拷贝从一台机器拷贝到上千台server? 我觉得这问题是分布式应
: 用的replication,应该有论文探讨过这个。不知道谁有些好的idea或者知道相关的论
: 文?

avatar
c*m
4
二爷贴个代码吧,这题没想明白啊,用循环就行啦,谢谢!

【在 p*****2 的大作中提到】
: 第一题应该用stack和queue都可以。
avatar
c*m
5
贴个代码瞅瞅?谢啦

【在 l*****a 的大作中提到】
:
: 这题不是循环吗?

avatar
p*2
6

1 abc
2 def
3 ghi
比如123
先算第一个,a,b,c
然后算第二个, ad, ae, af, bd, be, bf, ...
然后算第三个
这样就可以都算出来了。

【在 c*********m 的大作中提到】
: 贴个代码瞅瞅?谢啦
avatar
r*e
7

1 ABC
2 DEF
3 GHI
为例
string str;
cin >> str;
stack > s;
for (int i = 2; i >= 0; --i) {
s.push(make_pair('A' + (str[0] - '1') * 3 + i, 1));
}
vector > v;
while (!s.empty()) {
char c = s.top().first;
int level = s.top().second;
s.pop();
while (!v.empty() && v.back().second >= level) {
v.pop_back();
}
v.push_back(make_pair(c, level));
if (level == str.size()) {
for (int i = 0; i < str.size(); ++i) {
cout << v[i].first;
}
cout << endl;
} else {
for (int i = 2; i >= 0; --i) {
s.push(make_pair('A' + (str[level] - '1') * 3 + i, level + 1));
}
}
}

【在 c*********m 的大作中提到】
: 贴个代码瞅瞅?谢啦
avatar
b*7
8
排列问题的简化版,用stack回溯就可以了。
vector permutation(string digits)
{
char keyboard[][5] = { "abc", "def", "ghi", "jkl","mno","pqrs","tuv"
,"wxyz"};
vector st;
for(auto it = digits.begin(); it != digits.end(); ++it)
{
assert(*it >= '2' && *it <= '9');
st.push_back(keyboard[*it - '2']);
}
vector r;
while(true)
{
string temp = digits;
for(int i = 0; i < temp.length(); i++)
temp[i] = * st[i];
r.push_back(temp);
int i = (int)st.size() - 1;
while(i>=0 && *(st[i] + 1) == '\0')
i--;
if(i < 0)
break;
st[i]++;
for(int j = i+1; j < (int)st.size(); j++)
{
st[j] = keyboard[digits[j] - '2'];
}
}
return r;
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。