r****r 发帖数: 66 | 1 given a string with length t
for example char str[]="adg?b?dd?g"
each ? represents either '0' or '1'
print out all combinations of the string
本人菜鸟一个,非CS 专业, 还望指教。 |
p*****2 发帖数: 21240 | |
u*****o 发帖数: 1224 | 3 这题是不是可以这么想
三个问号代表三个位置,每个位置可以是0或1
就是要GENERATE三个位置可以组成的combination
000,001,010.。。
可以用bfs,也可以用binary generator。
【在 r****r 的大作中提到】 : given a string with length t : for example char str[]="adg?b?dd?g" : each ? represents either '0' or '1' : print out all combinations of the string : 本人菜鸟一个,非CS 专业, 还望指教。
|
j*****p 发帖数: 108 | 4 能简单讲一下怎么用dfs吗? 或者有什么连接能比较系统讲一下这一类的题目? 非常
感谢
【在 p*****2 的大作中提到】 : dfs
|
r****r 发帖数: 66 | 5 By the way, 这是google 电面题, 能详细讲讲吗。 |
s*******n 发帖数: 305 | |
p*****2 发帖数: 21240 | 7 等我把eclipse download下来做一下 |
p*****2 发帖数: 21240 | 8 def dfs(str, i)
if i==str.length
puts str
return
end
if str[i] == "?"[0]
str[i]='0'
dfs(str, i+1)
str[i]='1'
dfs(str, i+1)
str[i]='?'
else
dfs(str, i+1)
end
end
dfs("adg?b?dd?g", 0) |
s*******n 发帖数: 305 | |
u*****o 发帖数: 1224 | 10 这个代码好,简洁明了,二爷V5!
【在 p*****2 的大作中提到】 : def dfs(str, i) : if i==str.length : puts str : return : end : : if str[i] == "?"[0] : str[i]='0' : dfs(str, i+1) : str[i]='1'
|
|
|
u*****o 发帖数: 1224 | 11 python
【在 s*******n 的大作中提到】 : 楼上是什么语言?
|
r**h 发帖数: 1288 | |
u*****o 发帖数: 1224 | 13 是吗。。我只懂python,这个也看懂了。。
【在 r**h 的大作中提到】 : 应该是ruby吧
|
s*******n 发帖数: 305 | 14 刷题的时候感觉用java, 有时候很麻烦, 还不如C,
要是想学门新语言, ruby还是python, 推荐下。
多谢, 呵呵。 |
p*****2 发帖数: 21240 | 15
虽然我很喜欢ruby,但是感觉ruby的后劲不足呀。python后来居上了,并且还有一个
node.js抢地盘。如果玩玩的话ruby挺好玩的,如果面试的话应该python更适合。如果
找工作就不好说了。感觉会ruby找ruby的工作比会python找python的工作要容易很多。
【在 s*******n 的大作中提到】 : 刷题的时候感觉用java, 有时候很麻烦, 还不如C, : 要是想学门新语言, ruby还是python, 推荐下。 : 多谢, 呵呵。
|
i****y 发帖数: 84 | 16 这是不是和permutation with duplicate差不多? |
g***9 发帖数: 159 | 17 写了个C++的, 果然没有python,ruby的简洁呀
void GenerateCombinationsImpl(string s, int index, vector &result) {
if (index >= s.size()) {
result.push_back(s);
return;
}
if (s[index] == '?') {
string s1 = s;
s1[index] = '0';
GenerateCombinationsImpl(s1, index+1, result);
string s2 = s;
s2[index] = '1';
GenerateCombinationsImpl(s2, index+1, result);
}
else {
GenerateCombinationsImpl(s, index+1, result);
}
}
vector GenerateCombinations(const string &s) {
int n = s.size();
vector result;
if (0 == n) {
return result;
}
GenerateCombinationsImpl(s, 0, result);
return result;
} |
p*****2 发帖数: 21240 | 18 还是2.0好用一些。
def dfs(str, i)
if i==str.length
puts str
return
end
if str[i] == '?'
str[i]='0'
dfs(str, i+1)
str[i]='1'
dfs(str, i+1)
str[i]='?'
else
dfs(str, i+1)
end
end
dfs("adg?b?dd?g", 0) |
s*******n 发帖数: 305 | 19
多谢2爷了!
【在 p*****2 的大作中提到】 : 还是2.0好用一些。 : def dfs(str, i) : if i==str.length : puts str : return : end : : if str[i] == '?' : str[i]='0' : dfs(str, i+1)
|
i****y 发帖数: 84 | 20 这是只排0和1吧?其他string保持原位?
【在 p*****2 的大作中提到】 : 还是2.0好用一些。 : def dfs(str, i) : if i==str.length : puts str : return : end : : if str[i] == '?' : str[i]='0' : dfs(str, i+1)
|