厦门建站网址费用,长沙旅游十大必去景区,模板建站服务公司,黄页网站 php文章目录 01.程序结构划分02.去零03.合并04.上移05.下移/左移/右移#xff0c;只是取数据的方向不同06.提高可读性 01.程序结构划分 02.去零
有序向量“唯一化”的思路。 /// summary/// 去零/// /summary/// param namerow对于一行或一… 文章目录 01.程序结构划分02.去零03.合并04.上移05.下移/左移/右移只是取数据的方向不同06.提高可读性 01.程序结构划分 02.去零
有序向量“唯一化”的思路。 /// summary/// 去零/// /summary/// param namerow对于一行或一列元素/paramprivate static void Remove0(int[] row){int pos 0;for (int i 0; i 4; i) if (row[i] ! 0) row[pos] row[i];for (; pos 4; pos) row[pos] 0;}03.合并 /// summary/// 合并/// /summary/// param namerow对于一行或一列元素完成一次向左合并的操作/paramprivate static void Merge(int[] row){// 去零Remove0(row);// 相邻相同则合并for (int i0; i4-1; i){if (row[i] ! 0 row[i] row[i1]){row[i] * 2;row[i 1] 0;}}// 去零Remove0(row);}04.上移 /// summary/// 上移/// /summary/// param namemap原棋盘/param/// returns/returnsprivate static void Up(int[,] map){int[] arr new int[4] ;for (int j0; j4; j){for (int i0; i4; i) arr[i] map[i, j];Merge(arr);for (int i 0; i 4; i) map[i, j] arr[i];}}05.下移/左移/右移只是取数据的方向不同
比如“下移” 取数据和还数据的方向与“上移”相反。 /// summary/// 下移/// /summary/// param namemap原棋盘/param/// returns/returnsprivate static int[,] Down(int[,] map){int[] arr new int[4];for (int j 0; j 4; j){for (int i 0; i 4; i) arr[3-i] map[i, j];Merge(arr);for (int i 0; i 4; i) map[i, j] arr[3-i];}return map;}/// summary/// 左移/// /summary/// param namemap/param/// returns/returnsprivate static int[,] Left(int[,] map){int[] arr new int[4];for (int i 0; i 4; i){for (int j 0; j 4; j) arr[j] map[i, j];Merge(arr);for (int j 0; j 4; j) map[i, j] arr[j];}return map;}/// summary/// 右移/// /summary/// param namemap原棋盘/param/// returns/returnsprivate static int[,] Right(int[,] map){int[] arr new int[4];for (int i 0; i 4; i){for (int j 0; j 4; j) arr[3-j] map[i, j];Merge(arr);for (int j 0; j 4; j) map[i, j] arr[3-j];}return map;}06.提高可读性
枚举 enum Direction { up, down, left, right } /// summary/// 进行一次移动操作/// /summary/// param namemap原棋盘/param/// param namedir移动的方向枚举/paramprivate static void Move(int[,] map, Direction dir){switch (dir){case Direction.up:Up(map); break;case Direction.down:Down(map); break;case Direction.left:Left(map); break;case Direction.right:Right(map); break;}}