Tag: 拼图

在2D矩阵中找出相同的彩色块

我试图从2D矩阵的左上角开始找出一个相同颜色区域的块。 例如:我有以下矩阵: 1 1 1 2 2 3 1 1 2 3 4 5 1 1 1 1 3 4 1 4 3 2 1 5 2 3 4 5 1 2 比如,最初的左上角是1,我想找出包含1的相邻区域(我只考虑从左上角开始)。 在上面的矩阵中,数字1,2,3,4,5代表不同的颜色。 我尝试使用以下代码段来查找相同的颜色块: colors = [“red”, “green”, “blue”, “purple”, “orange”] # create an array of the colors so we can do work on […]

这个指针算术如何工作?

#include int main(void){ unsigned a[3][4] = { {2,23,6,7}, {8,5,1,4}, {12,15,3,9} }; printf(“%u”,*((int*)(((char*)a)+4))); return 0; } 我的机器中的输出是a[0][1]的值,即23。可以有人解释这是如何工作的? 编辑:回滚到旧的yucky代码,正是呈现给我的:P

查找给定数字组中的数字频率

假设我们在C ++中有一个向量/数组,我们希望计算这N个元素中的哪一个具有最大重复出现次数并输出最高计数。 哪种算法最适合这项工作。 例: int a = { 2, 456, 34, 3456, 2, 435, 2, 456, 2} 输出为4,因为2次出现4次。 这是2次发生的最大次数。

为什么(x + = x + = 1)在C和Javascript中的评价方式不同?

如果变量x值最初为0,则表达式x += x += 1将在C中计算为2,在Javascript中计算为1。 C的语义对我来说很明显: x += x += 1被解释为x += (x += 1) ,这反过来相当于 x += 1 x += x // where x is 1 at this point Javascript解释背后的逻辑是什么? 什么规范强制执行这种行为? (顺便说一下,应该注意Java在这里与Javascript一致)。 更新:事实certificate表达式x += x += 1具有根据C标准的未定义行为(感谢ouah , John Bode , DarkDust , Drew Dormann ),这似乎破坏了一些读者的问题的全部要点。 通过在其中插入标识函数,可以使表达式符合标准: x += id(x += 1) 。 可以对Javascript代码进行相同的修改,问题仍然如所述。 […]

C代码:这些甚至如何工作?

我刚看到这里 #include int main(int argc, char *argv[printf(“Hello, world!\n”)]) {} 这样做是打印“Hello World!” 但是这里到底发生了什么? 我能猜到的最好的是它被编译并抛出执行堆栈的顶部,但语法对我来说看起来不合法……

需要帮助解决基于C的编程难题

我在这里遇到了这个难题。 我无法弄清楚为什么没有打印。 有任何想法吗? #include int main() { int a=10; switch(a) { case ‘1’: printf(“ONE\n”); break; case ‘2’: printf(“TWO\n”); break; defa1ut: printf(“NONE\n”); } return 0; }

无法解决有关此代码的难题

int i,n=20; for(i=0;i<n;i–) printf("-"); 我一直在喋喋不休,但一直没能解决这个问题。 从上面的代码中删除任何单个字符或运算符 ,程序应打印“ – ”20次 请帮忙!

在C位中,乘以3除以16

我的一个伙伴有这些谜题,这是一个让我望而却步的谜题。 这是问题,你得到一个数字,你想要返回该数字乘以3并除以16舍入为0.应该很容易。 赶上? 你只能使用! 〜&^ | + <>运算符和它们只有12的组合。 int mult(int x){ //some code here… return y; } 我的尝试是: int hold = x + x + x; int hold1 = 8; hold1 = hold1 & hold; hold1 = hold1 >> 3; hold = hold >> 4; hold = hold + hold1; return hold; 但这似乎并没有起作用。 我想我有丢失的问题,但我似乎无法想出一种拯救它们的方法。 另一种观点是好的。 […]

如何在不使用任何比较运算符且不使用if,else等的情况下以编程方式返回两个整数的最大值?

如何在不使用任何比较运算符且不使用if , else等的情况下以编程方式返回最多两个整数?

通过改变一个字符来修复一个破碎的循环

我找到了一个有一些复杂的C拼图的网站 。 现在我正在处理这个问题: 以下是一段C代码,其目的是打印减号20次。 但你可以注意到,它不起作用。 #include int main() { int i; int n = 20; for( i = 0; i < n; i– ) printf("-"); return 0; } 修好上面的代码是很简单的。 要使问题变得有趣,您必须通过更改一个字符来修复上述代码。 有三种已知的解决方案。 看看你能不能得到这三个。 我无法弄清楚如何解决。 我知道可以通过改变– ++来修复它,但我无法弄清楚要改变哪个单个字符才能使它工作。