小编Sla*_*mac的帖子

为什么贪心算法没有找到最大的独立图集?

给定图G,为什么跟随贪心算法不能保证找到最大的独立 G :

Greedy(G):
S = {}
While G is not empty:
    Let v be a node with minimum degree in G
    S = union(S, {v})
    remove v and its neighbors from G
return S
Run Code Online (Sandbox Code Playgroud)

我想知道有人能告诉我一个简单的图表示例,这个算法失败了吗?

algorithm graph-theory

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

查找不在数组中的最小整数

鉴于未排序的集A什么是发现的最小整数最有效的解决方案x这是不元素A,使得x需要比一些大的整数m

例如

输入:A = {7, 3, 4, 1},m = 5

输出: x = 6

我在C中搜索解决方案,但任何类型的伪代码都会有所帮助......这个问题可以在O(n)中解决,其中n是设置大小吗?

c arrays algorithm

6
推荐指数
1
解决办法
436
查看次数

计算机中的整数表示 - C.

C是否定义整数的二进制表示,例如一个,二个补码......或者这个表示处理器(计算机或其他东西)是否依赖?

用C编写的代码的例子:

short a = -5;
Run Code Online (Sandbox Code Playgroud)

我在哪里需要了解哪些a是两个补码1111 1111 1111 1011或有符号位表示1000 0000 0000 0101

c binary

3
推荐指数
2
解决办法
253
查看次数

为什么我们不能在文件范围内两次键入一个(未命名的)结构,但是我们可以在没有错误的情况下两次输入"int"两次?

以下代码编译并运行正常:

#include <stdio.h>

typedef int Someint;
typedef int Someint;

int main()
{
    Someint b = 4;
    printf("%d", b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下代码无法编译.它给了我一个错误conflicting types for 'Somestruct'.

#include <stdio.h>

typedef struct
{
    int x;
}
Somestruct;

typedef struct
{
    int x;
}
Somestruct;

int main()
{
    Somestruct b;
    b.x = 4;
    printf("%d", b.x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么我可以typedef 一次type(int在第一个代码中)两次没有错误,但同样的事情失败了另一个type(上面的结构)?这两种情况有什么区别?我正在使用CodeBlocks 12.11附带的MinGW编译器.

c struct typedef

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

C中的矩阵表示

我想找出C编程语言中amxn实矩阵的最佳表示.

矩阵表示作为单个指针的优点是什么:

double* A;
Run Code Online (Sandbox Code Playgroud)

使用此表示,您可以分配内存:

A = (double* )malloc(m * n * sizeof(double));
Run Code Online (Sandbox Code Playgroud)

在这种表示中,矩阵访问需要额外的乘法:

aij = A[i * m + j];
Run Code Online (Sandbox Code Playgroud)

矩阵表示作为双指针的缺点是什么:

double** B;
Run Code Online (Sandbox Code Playgroud)

内存分配需要一个循环:

double** B = (double **) malloc(m * sizeof(double*));
for (i = 0; i < m; i++)
    A[i] = (double *) malloc(n * sizeof(double))
Run Code Online (Sandbox Code Playgroud)

在这种表示中,您可以使用直观的双索引`bij = B [i] [j],但是有一些缺点会影响性能.我想知道在性能方面什么是最好的演示.

这些矩阵应该用于数值算法,例如奇异值分解.我需要定义一个函数:

void svd(Matrix A, Matrix U, Matrix Sigma, Matrix V);
Run Code Online (Sandbox Code Playgroud)

我正在寻找代表Matrix的最佳方式.如果有任何其他有效的方法来表示C中的矩阵,请告诉我.

我已经看到大多数人使用单指针表示.我想知道是否有一些性能优势而不是双数组表示?

c matrix matrix-multiplication

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

在if语句中转换float

在以下代码中:

float x = 0.23;
int z;

z = x;

if (x)
    printf("float %f will not be converted to 0!\n", x);

if (z)
    printf("this will not print!\n");
Run Code Online (Sandbox Code Playgroud)

我认为浮点数将转换为整数,然后在if语句中使用时检查它是否为零.有人可以向我解释,为什么不是这样?

编辑:

(只是为了澄清令我感到困惑的事情)因为逻辑运算符像<return 一样int,我认为该if语句接收整数值所以需要进行转换.正如答案所指出的那样,事实并非如此.谢谢大家!

c c++

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

getAffineTransform - opencv

Q1.我想将点(x1,x2,x3)与点(y1,y2,y3)匹配.getAffineTransform无论这些点的顺序是什么,函数总是返回相同的变换矩阵吗?

Q2.如果我知道这些点只能通过旋转和平移进行变换而不进行任何缩放,那么从返回的变换矩阵中删除缩放的最简单方法是什么getAffineTransform.

c++ opencv affinetransform

0
推荐指数
1
解决办法
3526
查看次数