基础练习 回形取数

    xiaoxiao2021-03-25  98

    问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 8 9 6 3 2 5 样例输入 3 2 1 2 3 4 5 6 样例输出 1 3 5 6 4 2

    思路: 以下——>左——>上——>右为读数规律,控制下标增减完成输出。

    code:

    #include<stdio.h> int main(){ int m, n; int i, j; int cnt = 0; int x[200][200]; scanf("%d%d", &m, &n); for(i=0; i<m; i++) for(j=0; j<n; j++) scanf("%d", &x[i][j]); i=0; j=0; while(cnt < m*n){ while(x[i][j]>-1 && i<m){ printf("%d ", x[i][j]); x[i][j] = -1; i++;cnt++; } i--;j++; while(x[i][j]>-1 && j<n){ printf("%d ", x[i][j]); x[i][j] = -1; j++;cnt++; } i--;j--; while(x[i][j]>-1 && i>=0){ printf("%d ", x[i][j]); x[i][j] = -1; i--;cnt++; } i++;j--; while(x[i][j]>-1 && j>=0){ printf("%d ", x[i][j]); x[i][j] = -1; j--;cnt++; } j++;i++; } return 0; }

    初学小白,若有可改进之处欢迎评论

    转载请注明原文地址: https://ju.6miu.com/read-25896.html

    最新回复(0)