由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 来一题
相关主题
请教一个找DP路径问题boggle game是不是只有backtracking的解法?
问道题,谢谢写了一个Queens的backtrack 大牛帮我看看
一道亚麻电面题目suduku solver这道题写代码有点难啊。
问道amazon的面试题走迷宫的 时间复杂度是多少?谢谢
讨论A家一道题Google 电面面经
问个很有难度的矩阵算法问题splunk面经,攒人品
一道矩阵路径题最近面经经常见的一题
一道面试算法题请问:解 Sudoku 可以用什么算法?
相关话题的讨论汇总
话题: dp话题: mask话题: row话题: rows话题: np
进入JobHunting版参与讨论
1 (共1页)
h**6
发帖数: 4160
1
已经一个n*m的0/1矩阵,行数n>>列数m,求最少需要取多少行,才能保证每列至少有1
个1。
l*****a
发帖数: 14598
2
不缺条件吗?
至少你要保证有一个解把

1

【在 h**6 的大作中提到】
: 已经一个n*m的0/1矩阵,行数n>>列数m,求最少需要取多少行,才能保证每列至少有1
: 个1。

a********m
发帖数: 15480
3
上dp。

1

【在 h**6 的大作中提到】
: 已经一个n*m的0/1矩阵,行数n>>列数m,求最少需要取多少行,才能保证每列至少有1
: 个1。

u***n
发帖数: 117
4
没看出难点诶,先找出每列的第一个1所在行,然后求这些行号的最大值。
h**6
发帖数: 4160
5
不是一定从第一行起连续选取,可以从矩阵中任意取若干行。
m*****n
发帖数: 2152
6
楼主把题目变形了吧,这是那道国旗颜色的题。
而且为什么要用矩阵,用bitset不是更快吗。
刚想了一下,可以用bfs,但可能不是最好的。

1

【在 h**6 的大作中提到】
: 已经一个n*m的0/1矩阵,行数n>>列数m,求最少需要取多少行,才能保证每列至少有1
: 个1。

r****t
发帖数: 10904
7
没看懂,不是最少取m行就行了么? 取 m-1 行不可能满足,m+1 行又比 m 多。

【在 h**6 的大作中提到】
: 不是一定从第一行起连续选取,可以从矩阵中任意取若干行。
h**6
发帖数: 4160
8
看来我的表达能力堪忧,很多人都没理解题意。
比如矩阵
0 1 0 0 1
0 0 0 1 1
1 0 1 0 1
1 0 0 1 0
1 1 0 1 0
0 0 1 1 0
答案是2,取第3行和第5行就能保证每列至少有一个1。
x***y
发帖数: 633
9
Backtracking with cutting branches that cannot be optimal; A good start is
to have the columns sorted by how many 1s they have; and then start from the
column with the smallest number.
l*********8
发帖数: 4642
10
m的范围是多大?

1

【在 h**6 的大作中提到】
: 已经一个n*m的0/1矩阵,行数n>>列数m,求最少需要取多少行,才能保证每列至少有1
: 个1。

相关主题
问个很有难度的矩阵算法问题boggle game是不是只有backtracking的解法?
一道矩阵路径题写了一个Queens的backtrack 大牛帮我看看
一道面试算法题suduku solver这道题写代码有点难啊。
进入JobHunting版参与讨论
l*********8
发帖数: 4642
11
想了一个算法, O(logM * K^2) time, where K=min(2^M, N)
b*********n
发帖数: 464
12
好像是NP问题http://en.wikipedia.org/wiki/Set_cover_problem
现在能想到的只有backtrack。可以通过下面的方法缩小搜索空间:
1.可以先用geedy得到一个次优解:首先用含有1最多的行,然后一次选取能增加1最多
的行,直到m个1被cover。假设次优解是m1(m1<=m).backtrack最多需要搜索m1层。
2.如果一行被另一行cover,删除这一行。如果有多行相等,只保留一行。
3.如果某一列只有被一行包括,选定这一行,这个在回溯之前做

1

【在 h**6 的大作中提到】
: 已经一个n*m的0/1矩阵,行数n>>列数m,求最少需要取多少行,才能保证每列至少有1
: 个1。

h*******e
发帖数: 1377
13
只能想到类似线段树 查询算法.
M*******a
发帖数: 1633
14
应该NP,相当于set covering problem,每一行cover列的subset,怎么样找最小的行
集合来cover所有的列
所以NP
NP要找最优解基本只能bracktracking。
s*****r
发帖数: 108
15
楼上那些说 NP 的其实都是说 NPC 请弄清楚
l***i
发帖数: 1309
16
dp[r][mask] is the number of rows from row[0..r-1], that is, the first r
rows to cover bits in mask
dp[0][0] = 0
dp[0][mask] = INF for mask != 0
for r = 1 to n
for b = 0 to (1< {
b2 = b | matrix[r-1]; // interpret row[r-1] as an integer, this will
only work if m is 64 or less
dp[r][b2] = min(dp[r-1][b2], dp[r-1][b] + 1); // either not use row[r-1
] or use row[r-1]
}
return dp[n][(1< more bookkeeping
1 (共1页)
进入JobHunting版参与讨论
相关主题
请问:解 Sudoku 可以用什么算法?讨论A家一道题
微软面试题一道问个很有难度的矩阵算法问题
问一题一道矩阵路径题
0/1 Knapsack问题Linear Space的算法可以实现Backtrack吗?一道面试算法题
请教一个找DP路径问题boggle game是不是只有backtracking的解法?
问道题,谢谢写了一个Queens的backtrack 大牛帮我看看
一道亚麻电面题目suduku solver这道题写代码有点难啊。
问道amazon的面试题走迷宫的 时间复杂度是多少?谢谢
相关话题的讨论汇总
话题: dp话题: mask话题: row话题: rows话题: np