鱼C论坛

 找回密码
 立即注册
查看: 3210|回复: 21

求助 二维数组

[复制链接]
发表于 2021-10-26 15:47:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假设有一个Land[8][8]的二维数组,里面可随机输入1,再输入一个int “size”的变量
如果数组中的某个元素为1,检测它周围的所有格子(考虑边界判断),如果这个元素周围的格子里有1的个数>size,则把这个元素初始化。
例见图片
微信图片_20211026154145.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-26 16:41:53 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-26 19:39:58 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-27 00:07:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 08:38:37 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 08:38:56 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 10:22:53 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 10:42:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 10:45:02 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 11:55:53 | 显示全部楼层

回帖奖励 +5 鱼币

let me think one think
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 12:02:05 | 显示全部楼层

回帖奖励 +5 鱼币

我想想
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 12:13:43 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 13:02:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 14:20:34 | 显示全部楼层

回帖奖励 +5 鱼币

没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 17:00:43 | 显示全部楼层

回帖奖励 +5 鱼币

本帖最后由 Stubborn 于 2021-10-27 17:04 编辑

第零点: 8 * 8 的格子,只有0~63的索引,通过坐标是可以计算出来的。就是说,计算的范围会在0~63内,超出这个结果为边界。(另也可以直接判断值-1< a < 7 | -1< b < 7 )
第一点:land[a][c]  --> 第a行,第b列,最终的索引应该是 a * 8 + c ,如果这个值不在0~63即代表边界
第二点:land[a][c] ->周围的8个点是可计算的,如何计算,自己参考坐标的知识点,计算后的点是否到达边界,参考第第零点
第三点:拿到land[a][c] 周围8个点的左边,进行计算,可以得到结果


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-28 09:37:36 | 显示全部楼层
还没学到数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-28 09:38:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-28 11:40:18 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define ROW 8
  4. #define COL 8

  5. int checkaround(int, int, int[][*]);

  6. int main(void)
  7. {
  8.     int size;
  9.     int array[ROW][COL] = {
  10.         {1, 1, 0, 1, 1, 1},
  11.         {1, 1, 0, 1, 1, 1},
  12.         {0, 0, 0, 1, 1, 1},
  13.         {0},
  14.         {1, 1, 1, 1},
  15.         {1, 1, 1, 1},
  16.         {1, 0, 1, 1},
  17.         {1, 1, 1, 1, 0, 0, 1},
  18.     }; // 数组的初始化函数就不写了,直接用你例子
  19.     //因为你的计数规则是与改变后的数组无关,所以要复制一个二维数组用于遍历
  20.     int array2[ROW][COL];
  21.     memcpy(array2, array, sizeof(array));
  22.     //输入 size
  23.     scanf("%d", &size);
  24.     for (int i = 0; i < ROW; ++i)
  25.     {
  26.         for (int j = 0; j < COL; ++j)
  27.         {
  28.             if (checkaround(i, j, array2) >= size)
  29.                 array[i][j] = 0;
  30.             printf("%d ", array[i][j]); //顺便打印结果,可以去掉
  31.         }
  32.         printf("\n"); //顺便打印结果,可以去掉
  33.     }

  34.     return 0;
  35. }

  36. // 检查 array2 第 row 行 col 列周围 1 的个数
  37. int checkaround(int row, int col, int array[][COL])
  38. {
  39.     int count = 0;
  40.     for (int x = -1; x < 2; ++x)
  41.     {
  42.         for (int y = -1; y < 2; ++y)
  43.         {
  44.             // 边界检查,是自身或出界都跳过
  45.             if ((x == 0 && y == 0) || row + x < 0 || row + x >= ROW || col + y < 0 || col + y >= COL)
  46.                 continue;
  47.             if (array[row + x][col + y] == 1)
  48.                 ++count;
  49.         }
  50.     }

  51.     return count;
  52. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-28 15:53:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-31 16:54:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 12:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表