c - C 中的混洗多维数组

标签 c multidimensional-array shuffle

我正在尝试将这个多维数组洗入另一个数组,就像一副纸牌一样。

int ledMatrix[25][3] = {
  {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}, {13,14,15},
  {17,18,19}, {20,21,22}, {23,24,25}, {26,27,28}, {29,30,31},
  {33,34,35}, {36,37,38}, {39,40,41}, {42,43,44}, {45,46,47},
  {49,50,51}, {52,53,54}, {55,56,57}, {58,59,60}, {61,62,63},
  {65,66,67}, {68,69,70}, {71,72,73}, {74,75,76}, {77,78,79}
};

我尝试过:

int shuffle(){
  for (int i=0; i<25; i++)
  {
     int r = random(i,25
     temp =  ledMatrix[i];
     ledMatrix[i] =  ledMatrix[r];
     ledMatrix[r] = temp;
  }
}

但是我遇到了奇怪的错误:无效的数组分配。我认为这是因为我使用的是多维数组。有人可以帮我吗?谢谢

最佳答案

您需要复制各个列,如下所示:

int shuffle(){
  for (int i=0; i<25; i++)
  {
     int r = random(i,25);
     for (int j = 0; j < 3; j++)
     {
         int temp =  ledMatrix[i][j];
         ledMatrix[i][j] =  ledMatrix[r][j];
         ledMatrix[r][j] = temp;
     }
  }
}

关于c - C 中的混洗多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34203053/

相关文章:

java - 播放列表随机播放开/关

c++ - POSIX 套接字和 BSD 套接字有什么区别?

C 程序 - 使用 scanf 扫描字符串但从 .txt 文件读取

python - 你如何删除二维中的重复值

java - 集合随机播放方法具有空对象

python - Python 设置的无序可以被认为是随机顺序吗?

c - C中的别名内存

c - 隐藏和显示 EditBox CURSOR 的非常非常简单的功能

python - 在 NumPy 中将逐元素乘法和矩阵乘法与多维数组相结合

arrays - 按螺旋顺序打印矩阵