由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 顺时针打印MxN矩阵的简洁递归解法
相关主题
问个面试题算法--一个MXN matrix (0's and 1's)内求最大 rectangle(1's)
求顺时针打印矩阵codetwitter 一题
AMAZON PHONE SCREEN 1 基本死掉。matrix question
螺旋打印matrix请问走楼梯的问题如何打印所有的路径。
电面题一个请教一道有趣的算法题,请大侠点拨一下思路
LeetCode: Spiral PrintMatrix生成一个有重复数的全排列,怎么做比较好
leetcode word search算法题求教
问个算法题感觉careercup上的mergesort很不简洁
相关话题的讨论汇总
话题: int话题: sj话题: si话题: cout
进入JobHunting版参与讨论
1 (共1页)
K*******i
发帖数: 399
1
const int M = 4;
const int N = 5;
// si: row of the upper left element of the sub matrix
// sj: col of the upper left elment of the sub matrix
// m: rows of the current sub matrix
// n: cols of the current sub matrix
void PrintMatrix(int A[M][N], int si, int sj, int m, int n)
{
if (m == 0 || n == 0)
return;
if (m == 1)
{
for (int j = 0; j < n; j++)
cout << A[si + 0][sj + j] << " ";
}
else if (n == 1)
{
for (int i = 0; i < m; i++)
cout << A[si + i][sj + 0] << " ";
}
else
{
for (int j = 0; j < n - 1; j++)
cout << A[si + 0][sj + j] << " ";
for (int i = 0; i < m - 1; i++)
cout << A[si + i][sj + n - 1] << " ";
for (int j = n - 1; j > 0; j--)
cout << A[si + m - 1][sj + j] << " ";
for (int i = m - 1; i > 0; i--)
cout << A[si + i][sj + 0] << " ";
PrintMatrix(A, si + 1, sj + 1, m - 2, n - 2);
}
}
int main()
{
int A[M][N] = { {1, 2, 3, 4, 5}, {5, 6, 7, 8, 9}, {10, 11 ,12, 13,
14}, {15, 16, 17, 18, 19}};
PrintMatrix(A, 0, 0, M, N);
}
K*******i
发帖数: 399
2
si和sj还可以合并成一个变量,它们的值是同步变化的。
s******n
发帖数: 3946
3
写个循环的,思路和lz是一样的,同样的三个分支判断:1行/1列/多行多列
void print(int **a, int M, int N)
{
int l = 0;
int r = M-1;
int t = 0;
int b = N-1;
while (l<=r && t<=b) {
if (l==r) {
for (int i=t; i<=b; i++) printf("%d ", a[i][l]);
} else if (t==b) {
for (int i=l; i<=r; i++) printf("%d ", a[t][i]);
} else {
for (int i=l; i for (int i=t; i for (int i=r; i>l; i--) printf("%d ", a[b][i]);
for (int i=b; i }
l++;r--;
t++;b--;
}
}
w****x
发帖数: 2483
4
Tail recursion
k*******r
发帖数: 355
5
这还算简洁阿?代码行数还是太多了点吧
K*******i
发帖数: 399
6
能否给个更简洁的递归或者循环版本的?

【在 k*******r 的大作中提到】
: 这还算简洁阿?代码行数还是太多了点吧
s******n
发帖数: 3946
7
循环版本的我在上面写了啊

【在 K*******i 的大作中提到】
: 能否给个更简洁的递归或者循环版本的?
K*******i
发帖数: 399
8
是kittybear觉得还不够简洁。
你的循环版本不错,本质上很难更简化了

【在 s******n 的大作中提到】
: 循环版本的我在上面写了啊
b******t
发帖数: 965
9
前几天google screen就考了这个题
知道是老题但是自己没写过
搞这些edge condition搞了好久
估计要挂掉了

【在 K*******i 的大作中提到】
: 是kittybear觉得还不够简洁。
: 你的循环版本不错,本质上很难更简化了

1 (共1页)
进入JobHunting版参与讨论
相关主题
感觉careercup上的mergesort很不简洁电面题一个
为什么这个阶乘函数算到37就溢出了?LeetCode: Spiral PrintMatrix
晕了,有人用iteration解n queens么leetcode word search
问个基础题,大家不要笑我问个算法题
问个面试题算法--一个MXN matrix (0's and 1's)内求最大 rectangle(1's)
求顺时针打印矩阵codetwitter 一题
AMAZON PHONE SCREEN 1 基本死掉。matrix question
螺旋打印matrix请问走楼梯的问题如何打印所有的路径。
相关话题的讨论汇总
话题: int话题: sj话题: si话题: cout