蛟三升班必看!!!
文件IOfreopen(xxx.in,stdin);freopen(xxx.out,stdont);题目是什么文件就写什么文件加速器ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);加速cin/cout输出二维数组行列遍历只需要看好i和j在做二维数组的时候最好画个下标访问图下标访问图:a[1,1] a[1,2] a[1,3] a[1,4]a[2,1] a[2,2] a[2,3] a[2,4]a[3,1] a[3.2] a[3,3] a[3,4]a[4,1] a[4,2] a[4,3] a[4,4]边缘for(int i2;in;i){for(int j2;jm;j){//直接计算……}}数组初始化方法一:memset(a,0,sizeof(a));//值为0方法二:定义为全局变量斜线每条斜线i-jk1-nkn-1ijk2k2*n元素四周关系上a[x-1][y] 下a[x1][y] 左a[x][y-1] 右a[x][y1]四个方向:int dir[4][2]{{0,-1},{0,1},{-1,0},{1,0}}; for(int i0;i4;i){ xxdir[i][0]; yydir[i][1]; }左上a[x-1][y-1] 左下a[x1][y-1] 右上a[x-1][y1] 右下a[x1][y1]int dir[8][2]{{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{-1,1},{1,-1},{1,1}}; for(int i0;i8;i){ xxdir[i][0]; yydir[i][1]; }旋转矩阵123456789a[1][1]→b[1][3] a[2][1]→b[1][2] a[1][2]→a[2][3]a[2][2]→b[2][2] a[1][3]→b[3][3] a[2][3]→a[3][2]……741852963得出公式:顺时针90°:b[j][n1-i]a[i][j]顺时针180°:b[n1-i][m1-j]a[i][j]顺时针270°:b[m1-j][i]a[i][j]二维数组的回形遍历思路:边界情况能用bool二维数组来存放还要判断是否超出数组大小。dir数组:定义按顺序按右下左上顺序代码:int a[105][105]; bool b[105][105]; int dir[4][2]{{0,1},{1,0},{0,-1},{-1,0}}; int main(){ int n,m; cinnm; memset(b,false,sizeof(b)); for(int i1;in;i){ for(int j1;jm;j){ cina[i][j]; } } int x1,y0,sum0,fx0; while(sumn*m){ int dxxdir[fx][0]; int dyydir[fx][1]; if(dxn||dym||dx1||dy1||b[dx][dy]true){ fx(fx1)%4; } xxdir[fx][0]; yydir[fx][1]; couta[x][y] ; sum; b[x][y]true; } return 0; }递归递归:简洁问题能用函数描述问题转移边界内存多时间也多!补充:一维字符数组结构体定义结构体struct类型名称{//不要有()数据类型1 成员名1;数据类型2 成员名2;……}填完后能把它当成int ,long long来用如:类型名称a[105];姓名班级学号12345输入结构体一、cina.xma.id;二、(推荐)int id;string xm;cinxmid;a{xm,id};结构体排序正常:sort(a1,an1);结构体增加一个函数sort(a1,an1,cmp);函数:bool cmp(node x,node y){这里自己控制程序}运算符重载在结构体里写:bool operator(node x){这里自己控制程序}主函数里面只需要写sort(a1,an1)后面不用函数来写了有整体性就能用结构体!!!未完待续……