s*g
2 楼
printFactors(int n)
input:32
output:
1 * 32
2 * 16
2 * 2 * 8
2 * 2 * 2 * 4
2 * 2 * 2 * 2 * 2
2 * 4 * 4
4 * 8
没有思路啊。
只能想到先找出所有的factor。 大牛们能给点思路吗?谢谢
input:32
output:
1 * 32
2 * 16
2 * 2 * 8
2 * 2 * 2 * 4
2 * 2 * 2 * 2 * 2
2 * 4 * 4
4 * 8
没有思路啊。
只能想到先找出所有的factor。 大牛们能给点思路吗?谢谢
l*a
4 楼
List
- > func(int n) {
List
- > result= new ArrayList
- >();
List
get(n,2,cur,result);
return result;
}
public get(int target,int start,List
- > result
) {
if(target==1) {
result.add(new ArrayList
return;
}
for(int i=start;i<=target/2;i++) {
if(target%i==0) {
cur.add(i);
get(target/i,i,cur,result);
cur.remove(cur.size()-1);
}
}
}
注意,没考虑第一个1*32,你单独写进去好了
【在 s***g 的大作中提到】
: printFactors(int n)
: input:32
: output:
: 1 * 32
: 2 * 16
: 2 * 2 * 8
: 2 * 2 * 2 * 4
: 2 * 2 * 2 * 2 * 2
: 2 * 4 * 4
: 4 * 8
m*a
7 楼
还是辣娃好, 美女挺胸而出, 就好了。
p*p
8 楼
需要memorization,不然复杂度似乎是O(n!)级的(不是很确定这个怎么算)
result
【在 l*****a 的大作中提到】
: List
result
【在 l*****a 的大作中提到】
: List
- > func(int n) {
: List
- > result= new ArrayList
- >();
: List
: get(n,2,cur,result);
: return result;
: }
: public get(int target,int start,List
- > result
: ) {
: if(target==1) {
: result.add(new ArrayList
h*d
11 楼
p*p
12 楼
暴力递归解法:
public List
public List
- > printFactors(int n) {
List
- > result = new ArrayList
- >();
if(n <= 0) {
return result;
}
List
printFactorsHelper(n, trace, result);
return result;
}
private void printFactorsHelper(int n, List
List
if(list.isEmpty()) {
list.add(1);
}
list.add(n);
result.add(list);
for(int i = trace.isEmpty() ? 2 : trace.get(trace.size()-1); i <= n/
i; i++) {
if(n % i == 0) {
trace.add(i);
printFactorsHelper(n/i, trace, result);
trace.remove(trace.size()-1);
}
}
}
h*d
13 楼
c++的
void findfactor(int n, int target,int start, vector > &result,
vector &group)
{
if(target == 1)
{
if(group.size()==1)
{
group.insert(group.begin(),1);
}
result.push_back(group);
return;
}
for(int i= start;i<=target;i++)
{
if(target%i==0)
{
group.push_back(i);
findfactor(n, target/i, i, result, group);
group.pop_back();
}
}
}
【在 s***g 的大作中提到】
: printFactors(int n)
: input:32
: output:
: 1 * 32
: 2 * 16
: 2 * 2 * 8
: 2 * 2 * 2 * 4
: 2 * 2 * 2 * 2 * 2
: 2 * 4 * 4
: 4 * 8
void findfactor(int n, int target,int start, vector
vector
{
if(target == 1)
{
if(group.size()==1)
{
group.insert(group.begin(),1);
}
result.push_back(group);
return;
}
for(int i= start;i<=target;i++)
{
if(target%i==0)
{
group.push_back(i);
findfactor(n, target/i, i, result, group);
group.pop_back();
}
}
}
【在 s***g 的大作中提到】
: printFactors(int n)
: input:32
: output:
: 1 * 32
: 2 * 16
: 2 * 2 * 8
: 2 * 2 * 2 * 4
: 2 * 2 * 2 * 2 * 2
: 2 * 4 * 4
: 4 * 8
f*0
14 楼
函数参数有了target还要n干嘛?
另外这应该是指数级复杂度的吧?
void recur(int n, int m, vector > &results, vector &result)
{
//if (m > n) return;
if (n == 1) {
results.push_back(result);
return;
}
for (int i = m; i <= n; ++i) {
if (n%i == 0) {
result.push_back(i);
recur(n/i, i, results, result);
result.pop_back();
}
}
}
vector > printFactors(int n) {
vector > results = {{1,32}};
recur(n, 2, results, result);
return results;
}
【在 h**d 的大作中提到】
: c++的
: void findfactor(int n, int target,int start, vector > &result,
: vector &group)
: {
: if(target == 1)
: {
: if(group.size()==1)
: {
: group.insert(group.begin(),1);
: }
另外这应该是指数级复杂度的吧?
void recur(int n, int m, vector
{
//if (m > n) return;
if (n == 1) {
results.push_back(result);
return;
}
for (int i = m; i <= n; ++i) {
if (n%i == 0) {
result.push_back(i);
recur(n/i, i, results, result);
result.pop_back();
}
}
}
vector
vector
recur(n, 2, results, result);
return results;
}
【在 h**d 的大作中提到】
: c++的
: void findfactor(int n, int target,int start, vector
: vector
: {
: if(target == 1)
: {
: if(group.size()==1)
: {
: group.insert(group.begin(),1);
: }
相关阅读
hr说要电话聊天,回信后,就没了消息有人举几个个烙印,老美,老毛子被pip的例子吗?如何用现在的offer催面试华人被火成为新常态求问两题思路川普今天Rally上的讲话真的感动我了 (转载)问一个常见简历问题,绝大部分人遇到的问题什么是PIP请教华为bonus大家有没有什么好的挂靠公司open source的contributor需要写在简历上吗Google onsite面试题全都答出来,能录取么?请教一下Twitter现在还能去吗 求内部人士提供参考意见面试发现,中国人并不技术更强promotion后能拿competing offer来谈工资吗?google kirkland team matchYUM CHINA 的 CEO 竟然是阿三 ?狗家现在是不是不招人了? 怎么这么多人都在match不到team啊Uber Mobile Infra 内推国内进步很快啊!