二维数组的转圈打印和“之”字打印
来源:互联网 发布:qb充值软件 编辑:程序博客网 时间:2024/05/21 11:11
本次的代码是转圈打印和“之”字打印,两道题的基本思路是一致的,主要锻炼的是代码实现技巧。在转圈打印中,通过左上点和右下点就能标记出一个矩阵;“之”字打印中,对于左边变化的判断是需要熟练的。
1.转圈打印矩阵
#include "Array_matrix8_1.h"#include "iostream"using namespace std;#define N 4#define M 4Array_matrix8_1::Array_matrix8_1(){ //ctor}Array_matrix8_1::~Array_matrix8_1(){ //dtor}/* 不要纠结于坐标怎么上下左右动 4个变量标记一个矩阵,4个while循环*/void printEdge(int mat1[N][M],int ro1,int ro2,int co1,int co2){ int cur1=co1; int cur2=ro1; while(cur1!=co2){ //***可直接用“!=”减少多余的考虑 cout<<mat1[ro1][cur1]<<" "; cur1++; } while(cur2!=ro2){ cout<<mat1[cur2][co2]<<" "; cur2++; } while(cur1!=co1){ cout<<mat1[ro2][cur1]<<" "; cur1--; } while(cur2!=ro1){ cout<<mat1[cur2][co1]<<" "; cur2--; }}void spiralOrderPrint(int mat[N][M]){ int row1=0; //左上点的横坐标 int row2=N-1; //右下点的横坐标 int col1=0; int col2=M-1; while(row1<=row2&&col1<=col2) { // printEdge(mat,row1++,row2--,col1++,col2--); printEdge(mat,row1,row2,col1,col2); row1++; row2--; col1++; col2--; }}int main(){ int matrix[N][M]={1,2,3,4,5,6,7,8,4,3,2,1,8,7,6,5}; spiralOrderPrint(matrix); return 0;}
2.“之”字打印
#include "Array_matrix8_3.h"#include "iostream"using namespace std;#define N 4#define M 4Array_matrix8_3::Array_matrix8_3(){ //ctor}Array_matrix8_3::~Array_matrix8_3(){ //dtor}void print_level(int ma[N][M],int ro1,int ro2,int co1,int co2,bool fl){ if(fl){ while(ro1!=ro2+1){ cout<<ma[ro1++][co1--]<<" "; } }else{ while(ro2!=ro1-1){ cout<<ma[ro2--][co2++]<<" "; } }}void Zhizi_Print(int mat[N][M]){ int row1=0; //(row1,col1)横向走的坐标 (row2,col2)纵向走的坐标 int row2=0; int col1=0; int col2=0; int endrow=N-1; int endcol=M-1; bool flag=false; while(row1!=endrow+1){ print_level(mat,row1,row2,col1,col2,flag); row1= col1==endcol ? row1+1:row1; //如果走到的最后一列横坐标加1 col1= col1==endcol ? col1 :col1+1; //如果没有走到最后一列纵坐标加1 col2= row2==endrow ? col2+1:col2; row2= row2==endrow ? row2 :row2+1; flag= !flag; //flag==true :右上 ->左下,flag==false :左下 ->右上 }}int main(){ int matrix[N][M]={ {1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}}; Zhizi_Print(matrix); return 0;
0 0
- 二维数组的转圈打印和“之”字打印
- 转圈打印二维数组
- 转圈打印二维数组
- java ‘转圈’打印二维数组
- 二维数组的打印
- 二维数组的打印
- 转圈打印数组与之字形打印数组
- 之字型打印二维数组
- 打印二维数组的新方法
- 数组与矩阵---转圈打印矩阵
- 二维数组的打印和碰壁条件判断
- 剑指offer之顺时针打印二维数组
- 打印二维数组
- 螺旋打印二维数组
- 打印不规则二维数组
- 二维数组顺时针打印
- 二维数组打印
- java打印二维数组
- 磁盘阵列-raid0,raid1,raid5,raid10
- 【Python安装配置】Python2和Python3如何共存并使用Pip
- nobody_xl,今天是2017年的2月7号
- jquery设置css样式的多种方法
- Python对XML进行操作
- 二维数组的转圈打印和“之”字打印
- 如何使用ContentProvider打造自己的本地图片库
- 什么是软件测试(摘录)
- 2014 java 蓝桥杯 猜字母
- 2017-2-7-w3cschool编程挑战
- Windows下Anaconda的安装和简单使用
- 基于“预测性维修”的工业服务“互联网+”或将成为智能制造升级和应用的基石
- 杭电2025题,用到了strlen c++代码
- GitHub 上有哪些完整的开源项目值得参考?