小编tan*_*moy的帖子

使用回溯的N Queen的时间复杂度?

#include<stdio.h>
#include<math.h>

void printboard(int n);
void fourQueen(int k,int n);
int place(int k,int i);
int x[100];

void NQueen(int k,int n)
{
  int i;
  for(i=1;i<=n;i++)
  {
    if(place(k,i)==1)
    {     x[k]=i;
            if(k==n)
            {
                printf("Solution\n");
                printboard(n);
            }
            else
                NQueen(k+1,n);
    }
  }
}

int place(int k,int i)
{
  int j;
  for(j=1;j<k;j++)
  {
    if((x[j]==i)||abs(x[j]-i)==abs(j-k))
        return 0;
  }
  return 1;
}

void printboard(int n)
{
  int i;
  for(i=1;i<=n;i++)
    printf("%d  ",x[i]);
}

void main()
{
    int n;
    printf("Enter Value of N:");
    scanf("%d",&n);
    NQueen(1,n);
}
Run Code Online (Sandbox Code Playgroud)

我认为它有时间复杂度:O(n ^ n),因为NQueen函数是递归调用的,但是这个程序可能有更严格的约束吗?那么最好的情况,最坏的情况时间复杂性.我也对place()函数感到困惑,它是O(k)并从NQueen()调用.

c algorithm n-queens

12
推荐指数
5
解决办法
6万
查看次数

算法A的运行时间至少为O(n²) - 为什么它没有意义?

为什么声明:

算法A的运行时间至少为O(n²)

没意义?

插入排序算法的运行时间最多为O(n²)

这是对的吗?

我尝试了网但无法得到很好的解释.

我有另一个问题:

我知道任何线性函数a⋅n+ b都是O(n),也是O(n²).它也是O(n³)吗?

algorithm big-o asymptotic-complexity

7
推荐指数
2
解决办法
1万
查看次数

节点必须包含的最小键数是多少?

我有两本数据结构书.在两本书中,有两种不同的B树插入方法:

假设我想将值k插入B树.在搜索适当的叶节点以插入值k之后,计算特定叶节点中存在的值.如果叶节点已满,则:

1.从叶子元素和新元素中选择单个中值.之后将节点分成两个节点.中间值转移到父节点.

2.在m/2-1(m为树的顺序)position.median值转移到父节点后,将节点分成两个节点.之后将值插入到适当的位置.

以下哪种方法是正确的?

另一个问题:

对于订单n的B树,节点必须包含的最小密钥数是多少?我已经搜索了互联网和书籍,但无法得到确切的等式,我可以找到最小的密钥数:e,g if order = 5然后任何节点(root除外)的最小键数为2.这是怎么回事?

任何答案将不胜感激!

data-structures

2
推荐指数
1
解决办法
2万
查看次数

打开时默认最大化表单(JFrame)

如何JFrame在打开时默认最大化表单()?我已经尝试过网络,但无法获得适当的代码来完成它.

java swing

-1
推荐指数
1
解决办法
3816
查看次数