笔记4
来源:互联网 发布:旅游数据统计中心 编辑:程序博客网 时间:2024/05/29 16:31
打印矩阵
转自http://www.cnblogs.com/python27/
#include<iostream>#include<string>using namespace std;void PrintMatrixCircle(int **num,int sX,int sY,int eX,int eY);//给定矩阵,给定行列,由外向内顺时针打印数字void PrintMatrixClockwisely(int **matrix,int rows,int columns){ if(matrix == NULL || rows < 0 || columns < 0) return; int startX = 0; int startY = 0; int endX = rows - 1; int endY = columns - 1; while(1) { if(startX > endX && startY > endY) break; if(startX == endX && startY > endY) break; if(startX > endX && startY == endY) break; PrintMatrixCircle(matrix,startX,startY,endX,endY); ++startX; ++startY; --endX; --endY; }}//对于给定矩阵,给定对角线上两点,打印这一周的元素void PrintMatrixCircle(int **num,int sX,int sY,int eX,int eY){ //只有一行的情况,直接打印,返回。 if(sX == eX) { for(int j = sY;j <= eY;++j) { cout<<*(*(num+sX)+j)<<"\t"; } return; } //只有一列的情况,直接打印,返回。 if(sY == eY) { for(int i = sX;i <= eX;++i) { cout<<*(*(num+i)+sY)<<"\t"; } return; } //一般的情况打印四行 for(int p = sY;p < eY;++p) { cout<<*(*(num+sX)+p)<<"\t"; } for(int q = sX;q < eX;++q) { cout<<*(*(num+q)+eY)<<"\t"; } for(int m = eY;m > sY;--m) { cout<<*(*(num+eX)+m)<<"\t"; } for(int n = eX;n > sX;--n) { cout<<*(*(num+n)+sY)<<"\t"; }}int main(){ int example[6][6]; int *point1[6] = {example[0],example[1],example[2],example[3],example[4],example[5]}; int **point = point1; int cnt=1; //初始化 for(int i = 0;i < 6;i++) { for(int j = 0;j < 6;j++) { example[i][j] = cnt; cnt++; } } cout<<"the original matrix is:"<<endl; for(i = 0;i < 6;i++) { for(int j = 0;j < 6;j++) { cout<<example[i][j]<<"\t"; } cout<<endl; } cout<<"the clockwisely output of the matrix is:"<<endl; PrintMatrixClockwisely(point,6,6); cout<<endl; return 0;}方法二:转
#include <iostream>using namespace std;//顺时针打印矩阵void PrintMetrix(int**arr,int num,int start_x,int end_x,int start_y,int end_y){ bool up=true; bool left=true; bool down=false; bool right=false; int i; while(num>0) { if(left&&up) { for(i=start_x;i<=end_x;++i) { cout<<arr[start_y][i]<<" "; num--; } start_y++; left=false; right=true; } else if(right&&up) { for(i=start_y;i<=end_y;++i) { cout<<arr[i][end_x]<<" "; num--; } end_x--; up=false; down=true; } else if(right&&down) { for(i=end_x;i>=start_x;i--) { cout<<arr[end_y][i]<<" "; num--; } end_y--; left=true; right=false; } else if(left&&down) { for(i=end_y;i>=start_y;--i)
方法三转
最直观的方法:
#include<iostream>using namespace std;#define N 9void PrinArryByClockwise(int n[][N], int x1, int y1, int x2, int y2) { int i; if ( x1 > x2 || y1 > y2) return; for (i = y1; i <= y2; i++) printf("%d,", n[x1][i]); // 第一行 if (x2 > x1) { for (i = x1+1; i <= x2; i++) printf("%d,", n[i][y2]); //最右一列 for (i = y2 - 1; i >= y1; i--) printf("%d,", n[x2][i]); //最后一行 for (i = x2 - 1; i > x1; i--) printf("%d,", n[i][y1]);//最左一列 } PrinArryByClockwise(n, x1+1, y1+1, x2-1, y2-1); }int main(){int n[3][N]={{0,3,5,6,7,8,10,100,200}, {0,3,5,6,7,8,10,100,200}, {0,3,5,6,7,8,10,100,200} }; PrinArryByClockwise(n, 0,0,2,8);}
0 0
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- [笔记] 传智播客-javaWeb笔记(4)
- python笔记4 (练习数据结构笔记)
- Python学习笔记,4Python基础知识笔记
- cs231n笔记之我的笔记4
- C++学习笔记(4)
- AD学习笔记4
- oracel学习笔记4
- 操作系统概念-内存管理
- MongoDB开发学习经典入门
- 自己实现简单RPC功能
- jquery
- C++11系列-区间迭代
- 笔记4
- Struts2的工作原理
- Flask 教程
- Fedora 下调节外放音量和屏幕亮度
- Sort List -- LeetCode
- 黑马程序员_IO_02
- 关于一步一步搭建嵌入式Ubuntu 开发环境
- AngularJS入门教程
- AMD Radeon HD5870 memory capacity and performance