大家来讨论一下这道题目

ensoniq 2006-09-05 05:42:26
能解决的即结贴给分,计算限时2秒。这个题目来自gcj2006的练习题,不知道原来是哪一局用过的题目。google不厚道,出这样的练习题,还是250分的。 :)


Problem Statement
    
You want to send a group of salespeople from location 0 to location 1, but no two of them can travel through the same location (other than 0 and 1). This removes the possibility of trying to sell a customer the same product twice. Character j of element i (both 0-based) of adj denotes whether locations i and j are connected by a symmetric link ('1' for connected, '0' otherwise). Return the greatest number of salespeople that can be sent. The constraints will guarantee that locations 0 and 1 do not share a link.
Definition
    
Class:
SalesRouting
Method:
howMany
Parameters:
vector <string>
Returns:
int
Method signature:
int howMany(vector <string> adj)
(be sure your method is public)
    

Constraints
-
adj will contain between 3 and 12 elements, inclusive.
-
Each element of adj will contain exactly N characters, where N is the number of elements in adj.
-
Each character in adj will be '0' (zero) or '1' (one).
-
Character i of element j of adj will be the same as character j of element i.
-
Character i of element i of adj will be '0'.
-
Character 1 of element 0 of adj will be '0'.
Examples
0)

    
{
"001",
"001",
"110"
}
Returns: 1
We can send a single salesperson from location 0 to location 2, and finally to location 1.
1)

    
{
"0010",
"0010",
"1100",
"0000"
}
Returns: 1
Same as before, but now there is an isolated location 3.
2)

    
{
"001100",
"000001",
"100010",
"100010",
"001101",
"010010"
}
Returns: 1
The only location that is directly connected to location 1 is 5, so only 1 salesperson can be sent.
3)

    
{
"001111",
"001111",
"110000",
"110000",
"110000",
"110000"
}
Returns: 4

4)

    
{
"00000",
"00000",
"00000",
"00000",
"00000"
}
Returns: 0

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.
...全文
448 点赞 收藏 6
写回复
6 条回复
Michaelgs 2006年09月06日
问题规模比较小, 我用的DP
f(n,set)表示从n点出发,经过set中的全部或部分点可以到达1的不相交路径的最大数目
f(n,set) = max{ f(i,set-{i}) }, adj[n][1] != 1 && adj[n][i] == 1
f(n,set) = f(0,set)+1, adj[n][1] == 1
回复 点赞
phoenixinter 2006年09月05日
network flow
pay attention that each vertex has a flow constraint
回复 点赞
ensoniq 2006年09月05日
网络流的话何解?brutal force?
回复 点赞
galois_godel 2006年09月05日
化点为线,就是网络流
回复 点赞
ensoniq 2006年09月05日
比网络流稍微简单些,我的理解是一个节点一旦访问过就再不能再访问,因为不能重复推销。
回复 点赞
galois_godel 2006年09月05日
这不就是网络流嘛
回复 点赞
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.0w+

社区成员

3.4w+

社区内容

数据结构与算法相关内容讨论专区
社区公告
暂无公告