2012蓝桥杯省赛第五题 转方阵(矩阵倒置)
来源:互联网 发布:windows激活不可用 编辑:程序博客网 时间:2024/06/15 01:10
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后变为:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
void rotate(int* x, int rank){int* y = (int*)malloc(___________________); // 填空for(int i=0; i<rank * rank; i++){y[_________________________] = x[i]; // 填空}for(i=0; i<rank*rank; i++){x[i] = y[i];}free(y);}int main(int argc, char* argv[]){int x[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};int rank = 4;rotate(&x[0][0], rank);for(int i=0; i<rank; i++){for(int j=0; j<rank; j++){printf("%4d", x[i][j]);}printf("\n");}return 0;}答案:
(1)rank*rank*sizeof(int)
(2) (i%4)*4+3-i/4
第一步无可厚非,就是开一个和原本矩阵大小相同的数组而已,第二步变换如下
矩阵的普通的倒置是x[j][i]=x[i][j];
顺时针倒置是x[j][3-i]=x[i][j];
此处还要讲i转化成两个坐标,即:x[i]->x[i/4][i%4]
那么,通过顺时针倒置,则有 x[i%4][3-i/4]=x[i/4][i%4]=x[i]
即:x[(i%4)*4+3-i/4]=x[i];
- 2012蓝桥杯省赛第五题 转方阵(矩阵倒置)
- 打印螺旋矩阵(方阵)
- 线性代数:第五章 相似矩阵及二次型(1)向量的内积 方阵的特征值与特征向量 相似矩阵
- 生成螺旋矩阵(方阵、矩阵)
- 矩阵倒置
- 数学问题(五)之 矩阵倒置
- 转方阵
- 转方阵
- 转方阵
- 转方阵
- 转方阵
- python 非方阵矩阵求解
- 两个矩阵相乘—Strassen算法(矩阵为偶数阶方阵)
- 2012年蓝桥杯【初赛试题】 转方阵
- 2012年蓝桥杯【初赛试题】 转方阵
- 2012蓝桥杯C++本科 转方阵
- 线性代数:第三章 矩阵的初等变换与线性方程组(2)线性方程组的解 初等方阵
- 51nod-方阵与完全平方数(构造矩阵+dfs)
- 500 OOPS:cannot change directory:/root 问题
- 总结:MFC中一个对话框的关闭过程
- 下载Spring3的官方源代码
- 编程之美系列之二叉树2—二叉树的距离问题(续)
- 查找带回——子父页面数据交互
- 2012蓝桥杯省赛第五题 转方阵(矩阵倒置)
- 构建现代站点且同时支持旧版 IE 的 20 个提示
- 嵌入式视频——好东西要一起分享!!!
- win8开发的一个小模块(猜算式)
- UVA 127 "Accordian" Patience
- Ubuntu和Win7双系统修改启动顺序
- 掌握C++
- 问题一百一十六:支配值数目
- Android 3D OpenGL ES 进阶(2)