对一个方阵转置,就是把原来的行号变列号,原来的列号变行号

例如,如下的方阵:

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=; i<rank * rank; i++)
{
y[_________________________] = x[i]; // 填空
} for(i=; i<rank*rank; i++)
{
x[i] = y[i];
} free(y);
} int main(int argc, char* argv[])
{
int x[][] = {{,,,},{,,,},{,,,},{,,,}};
int rank = ; rotate(&x[][], rank); for(int i=; i<rank; i++)
{
for(int j=; j<rank; j++)
{
printf("%4d", x[i][j]);
}
printf("\n");
} return ;
}

  水题,考验C的基本功

  没什么好说的,自己在演草纸上验算一遍,就能发现矩阵映射规律。

  x[i] 转换成二维坐标是 x[i/rank][i%rank]。它应该放到y的 y[i%rank][rank-i/rank-1] 位置。

  转换成一维坐标就是 y[(i%rank)*rank+rank-i/rank-1]。

  注意:1、a[i][j]可以用a[i*n+j]表示,n表示方阵的阶数。2、malloc()函数中要加上sizeof(int)。

  答案

sizeof(int)*rank*rank
(i%rank)*rank+rank-i/rank-

   代码:

 #include <iostream>
#include <malloc.h>
#include <stdio.h>
using namespace std; void rotate(int* x, int rank)
{
int* y = (int*)malloc(sizeof(int)*rank*rank); // 填空 int i;
for(i=; i<rank * rank; i++)
{
y[(i%rank)*rank+rank-i/rank-1] = x[i]; // 填空
} for(i=; i<rank*rank; i++)
{
x[i] = y[i];
} free(y);
} int main(int argc, char* argv[])
{
int x[][] = {{,,,},{,,,},{,,,},{,,,}};
int rank = ; rotate(&x[][], rank); for(int i=; i<rank; i++)
{
for(int j=; j<rank; j++)
{
printf("%4d", x[i][j]);
}
printf("\n");
} return ;
}

Freecode : www.cnblogs.com/yym2013

蓝桥杯 第三届C/C++预赛真题(5) 转方阵(C基本功)的更多相关文章

  1. 蓝桥杯 第三届C/C++预赛真题(10) 取球游戏(博弈)

    今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1 ...

  2. 蓝桥杯 第三届C/C++预赛真题(9) 夺冠概率(手工计算概率)

    足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能. 假设有甲.乙.丙.丁四个球队.根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表: 甲 乙 丙 丁 甲 - 0.1 0.3 0.5乙 ...

  3. 蓝桥杯 第三届C/C++预赛真题(8) 密码发生器(水题)

    在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全:如果设置不好记的密码,又担心自己也会忘记:如果写在纸上,担心纸张被别人发现或弄丢了... 这个程 ...

  4. 蓝桥杯 第三届C/C++预赛真题(4) 奇怪的比赛(递归)

    某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍:答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错 ...

  5. 蓝桥杯 第三届C/C++预赛真题(1) 微生物增值(数学题)

    假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y. 现在已知有新 ...

  6. 蓝桥杯 第三届C/C++预赛真题(7) 放棋子(水题)

    今有 6 x 6 的棋盘格.其中某些格子已经预先放好了棋子.现在要再放上去一些,使得:每行每列都正好有3颗棋子.我们希望推算出所有可能的放法.下面的代码就实现了这个功能. 初始数组中,“1”表示放有棋 ...

  7. 蓝桥杯 第三届C/C++预赛真题(6) 大数乘法(数学题)

    对于32位字长的机器,大约超过20亿,用int类型就无法表示了,我们可以选择int64类型,但无论怎样扩展,固定的整数类型总是有表达的极限!如果对超级大整数进行精确运算呢?一个简单的办法是:仅仅使用现 ...

  8. 蓝桥杯 第三届C/C++预赛真题(3) 比酒量(数学题)

    有一群海盗(不多于20人),在船上比拼酒量.过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了.再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船 ...

  9. 蓝桥杯 第三届C/C++预赛真题(2) 古堡算式(数学题)

    福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久, ...

随机推荐

  1. 【转】Socket状态变迁图

    转自:http://www.cnblogs.com/ILove/archive/2008/12/08/1350430.html   服务端,端口的状态变化 先在本机(IP地址为:192.168.1.1 ...

  2. webDriver API——第5部分Special Keys

    The Keys implementation. class selenium.webdriver.common.keys.Keys Bases: object Set of special keys ...

  3. 安装python3.6后使用pip报错

    安装python3.6后,pip是一起安装好的,安装目录再C:\Programs\Python\Python36-32\Scripts中. 在python终端模式下使用pip出现错误如下: 错误原因: ...

  4. HDFS原理解析(整体架构,读写操作流程及源代码查看等)

    前言 HDFS 是一个能够面向大规模数据使用的.可进行扩展的文件存储与传递系统.是一种同意文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间.让实际上是通过网络来訪问文件的 ...

  5. 纯div+css制作的弹出菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Inno Setup 打包的文件以管理员权限执行

    最近发现一个问题,就是Inno Setup打包的程序安装完毕后执行需求管理员权限的程序的时候会失败( inno createprocess   须要提升),解决问题的最简单办法就是打包的后的程序也以管 ...

  7. mysql-shell的安装和使用

    mysql-shell是一个高级的mysql命令行工具.它直接两种模式(交互式&批处理式)三种语言(javascript\python\sql) 1.下载地址 https://dev.mysq ...

  8. 点滴积累【JS】---JS小功能(JS实现隐藏显示侧边栏,也就是分享栏的隐藏显示)

    效果: 思路: 首先,利用计时器setInterval实现DIV的隐藏显示功能,然后在进行一个判断,之后在把要移动的相应距离进行一个参数传递,再根据参数判断出移动的方向也就是offsetLeft移动的 ...

  9. Event-Souring模式

    Event-Sourcing模式使用仅附加存储来记录或描写叙述域中数据所採取的动作,从而记录完整的一系列系列事件,而不是仅存储实体的当前状态.由于存储包括全部的事件,能够用来具体化域对象. Event ...

  10. [svc][op]从历险压缩日志里网站pv uv统计

    http://myhoop.blog.51cto.com/5556534/1367523 tomcat日志格式: http://www.cnblogs.com/anic/archive/2012/12 ...