解题思路:
判断边界不用||分隔的行列坐标。在输入的矩形外面加一层外框,全部置-1,判断当前移动前方是-1则回退一步,左转。
当前走过的位置赋值-1。
行方向前进增量-1开始,列前进增量1开始。之后每次行前进完,列前进方向取反;列前进完行前进方向取反。行,列方向各前进一次为一轮。一轮都没有前进则退出循环。
优化外框只需要3个关键位置置为-1。
参考代码:
#include <stdio.h> #define N 202 int main() { int a[N][N]={0}; int m,n; int flag=0,x=1,y=1,c=1; int incy=-1,incx=1; scanf("%d%d",&m,&n); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); a[m+1][1]= -1; a[m][n+1]= -1; a[0][n]= -1; while(c){ c=0; while(a[x][y]!=-1){ if(x!=1||y!=1) printf(" "); printf("%d",a[x][y]); a[x][y]=-1; x+=incx; c=1; } if(c==0) break; x-=incx; incy=-incy; y+=incy; while(a[x][y]!=-1){ printf(" %d",a[x][y]); a[x][y]=-1; y+=incy; c=2; } y-=incy; incx=-incx; x+=incx; } }
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题10.7 (用指针求解)浏览:1460 |
1134题解(求分析)浏览:722 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:756 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:614 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:568 |
马拦过河卒 (C语言代码)浏览:1092 |
小九九 (C++代码)简单粗暴,直接输出浏览:664 |
母牛的故事 (C语言代码)浏览:476 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:612 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:3357 |