C#二维数组填充:如何用循环实现外层两行两列设1其余设0?
实现二维数组的边框填充需求
核心思路是先初始化全0数组,再通过循环给指定位置赋值为1。以下用Python和Java两种常见语言演示,逻辑通用:
实现逻辑拆解
需要设为1的位置分为两类:
- 数组的前两行和最后两行,整行元素全部为1;
- 中间行的前两列和最后两列,仅这些位置为1,其余保持0。
Python 代码示例
# 定义数组的行数和列数(可根据需求修改) rows = 10 cols = 20 # 初始化全0二维数组 arr = [[0 for _ in range(cols)] for _ in range(rows)] # 循环处理每一行 for i in range(rows): # 前两行或最后两行:整行设为1 if i < 2 or i >= rows - 2: for j in range(cols): arr[i][j] = 1 else: # 中间行:仅最外侧两列设为1 for j in range(cols): if j < 2 or j >= cols - 2: arr[i][j] = 1 # 按示例格式打印结果 for row in arr: print(''.join(map(str, row)))
Java 代码示例(更简洁的条件判断写法)
public class BorderArray { public static void main(String[] args) { int rows = 10; int cols = 20; int[][] arr = new int[rows][cols]; // 一次循环完成所有赋值 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { // 判断是否为需要设为1的位置 if (i < 2 || i >= rows - 2 || j < 2 || j >= cols - 2) { arr[i][j] = 1; } else { arr[i][j] = 0; } } } // 打印输出 for (int[] row : arr) { for (int num : row) { System.out.print(num); } System.out.println(); } } }
两种写法都能实现你要的效果,第二种Java写法通过一个条件判断直接覆盖所有需要设为1的场景,更适合新手理解逻辑。
内容的提问来源于stack exchange,提问作者Keeper26
相关产品推荐
相关产品推荐

