小编jai*_*unt的帖子

如果该行或列包含0,则将矩阵中的每个单元格设置为0

给定具有0和1的NxN矩阵.将包含a的每一行设置0为all 0s并将包含a的每一列设置0为all 0s.

例如

1 0 1 1 0
0 1 1 1 0
1 1 1 1 1
1 0 1 1 1
1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

结果是

0 0 0 0 0
0 0 0 0 0
0 0 1 1 0
0 0 0 0 0
0 0 1 1 0
Run Code Online (Sandbox Code Playgroud)

微软工程师告诉我,有一个解决方案不涉及额外的内存,只有两个布尔变量和一个通过,所以我正在寻找答案.

顺便说一句,想象它是一个位矩阵,因此只允许1s和0s在矩阵中.

puzzle algorithm optimization

152
推荐指数
4
解决办法
5万
查看次数

"重构"有没有正式的定义?

任何人都知道以更正式的方式定义重构的方法吗?

UPDATE.

重构是一对R =(pre; T),其中pre是程序必须满足的前提条件,T是程序转换.

theory refactoring program-transformation

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

解释用于设置,清除和测试单个位的算法

嘿,在Programming Pearls一书中,有一个源代码,用于设置,清除和测试一个实际上是一组表示的整数数组中给定索引的位.

代码如下:

#include<stdio.h>
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000

int a[1+ N/BITSPERWORD];

void set(int i)
{
    a[i>>SHIFT] |= (1<<(i & MASK));
}

void clr(int i)
{
    a[i>>SHIFT] &= ~(1<<(i & MASK));
}

int test(int i)
{
    a[i>>SHIFT] & (1<<(i & MASK));
}
Run Code Online (Sandbox Code Playgroud)

有人能解释一下SHIFT和MASK定义的原因吗?他们在代码中的目的是什么?

我已经阅读了之前的相关问题.

c bit-manipulation

5
推荐指数
3
解决办法
2665
查看次数

自动获取博客供稿网址

给定博客URL,获取其RSS源URL.我知道这个问题在这里被问到,但我正在寻找一个独立于框架的算法,但是我更喜欢C#中的代码.

c# rss

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