Redian新闻
>
该怎么推导下面算法时间复杂度O(N!*N)的*N?
avatar
该怎么推导下面算法时间复杂度O(N!*N)的*N?# Programming - 葵花宝典
h*7
1
求助~去年年底申的chase美联航的信用卡,给了7万迈,已经换机票了,现在关,机票
会被取消吗?
avatar
n*w
2
下面是N-Queen的一个native解法。该怎么推导下面算法时间复杂度O(N!*N)的*N?N!容
易看出来。这个 *N 应该是和这行if (!Valid(s, row, i)) continue;有关?
static void DFS(int[] s, int row, List> allSolutions)
{
var N = s.Length;
if (row == N)
{
var solution = s.Select(x => { var a = new bool[N]; a[x] =
true; return a; }).ToList();
allSolutions.Add(solution);
PrintSolution(solution);
return;
};
for (var i = 0; i < N; i++)
{
if (!Valid(s, row, i)) continue;
s[row] = i;
// Console.WriteLine(s.Aggregate($"{row}-", (a, n)=> $"{a} {
(n==-1?".":n.ToString())}"));
DFS(s, row + 1, allSolutions);
}
}
static private bool Valid(int[] s, int row, int col)
{
for (var i = 0; i < row; i++)
{
if (s[i] == col) return false;
if (Math.Abs(row - i) == Math.Abs(col - s[i])) return false;
}
return true;
}
static List> Solve(int n)
{
var allSolutions = new List>();
var s = new int[n];
Array.Fill(s, -1);
DFS(s, 0, allSolutions);
return allSolutions;
}
avatar
b*8
3
no
avatar
d*a
4
对。Valid过程的执行代价是O(N)。DFS一共被调用了N!次,每次除递归调用之外的执行
代价是O(N),所以总的代价是O(N!*N)。

【在 n*w 的大作中提到】
: 下面是N-Queen的一个native解法。该怎么推导下面算法时间复杂度O(N!*N)的*N?N!容
: 易看出来。这个 *N 应该是和这行if (!Valid(s, row, i)) continue;有关?
: static void DFS(int[] s, int row, List> allSolutions)
: {
: var N = s.Length;
: if (row == N)
: {
: var solution = s.Select(x => { var a = new bool[N]; a[x] =
: true; return a; }).ToList();
: allSolutions.Add(solution);

avatar
h*7
5
谢谢~

【在 b********8 的大作中提到】
: no
avatar
n*w
6
看起来像是 O(N!+N) = O(N!)?
而且valid的执行代价应该小于O(N)。valid的调用参数先是很小。等处理的row多了的
话又很容易提前return false?
不过试了一下4-queen,loop的次数确实大于4!。

【在 d***a 的大作中提到】
: 对。Valid过程的执行代价是O(N)。DFS一共被调用了N!次,每次除递归调用之外的执行
: 代价是O(N),所以总的代价是O(N!*N)。

avatar
D*E
7
干嘛这么早关,会缩短你的所有账户的开户时间,没好处啊,快到一年的时候再关,或
者看看有没有RETENTION BONUS。

【在 h**********7 的大作中提到】
: 求助~去年年底申的chase美联航的信用卡,给了7万迈,已经换机票了,现在关,机票
: 会被取消吗?

avatar
D*E
8
而且万一被CHASE弄进黑名单,申请不了新卡了,更得不偿失。

【在 D*****E 的大作中提到】
: 干嘛这么早关,会缩短你的所有账户的开户时间,没好处啊,快到一年的时候再关,或
: 者看看有没有RETENTION BONUS。

avatar
s*y
9
有些卡是不是早点关,可以早点重开啊。。
ps,现在还能churning的还有哪些家啊?从08年才有第一张secure卡,那些重复开关的
好时光都没赶上。。

【在 D*****E 的大作中提到】
: 干嘛这么早关,会缩短你的所有账户的开户时间,没好处啊,快到一年的时候再关,或
: 者看看有没有RETENTION BONUS。

avatar
w*f
10
如果开了没多久的,关了反而会增加平均时间啊

【在 D*****E 的大作中提到】
: 干嘛这么早关,会缩短你的所有账户的开户时间,没好处啊,快到一年的时候再关,或
: 者看看有没有RETENTION BONUS。

avatar
l*y
11
之前还有7W的啊?就见过5W的,亏了

【在 h**********7 的大作中提到】
: 求助~去年年底申的chase美联航的信用卡,给了7万迈,已经换机票了,现在关,机票
: 会被取消吗?

avatar
h*7
12
那个毕业了,要回国了,以后用不上,所以不得不关,呵呵

【在 D*****E 的大作中提到】
: 干嘛这么早关,会缩短你的所有账户的开户时间,没好处啊,快到一年的时候再关,或
: 者看看有没有RETENTION BONUS。

avatar
h*7
13
。。。。那我记错了,可能是5万,汗。。。。。。

【在 l****y 的大作中提到】
: 之前还有7W的啊?就见过5W的,亏了
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。