方阵顺时针旋转的实现代码

例如,如下的方阵:

1  2  3  4
 5  6  7  8
 9 10 11 12

13 14 15 16

顺时针旋转,却是如下结果:

13  9  5  1
14 10  6  2
15 11  7  3
16 12  8  4

代码如下:

#include <stdio.h>
void rotate(int* x, int rank)
{
 int* y = (int*)malloc(sizeof(int) * rank * rank);

for(int i=0; i<rank * rank; i++)
 {
         // 以原第一行进行分析  一行数变为同一列  以原第一列为例,变为同一行。  (i%rank)*rank使列变为行   rank-(i/rank)-1) 使行变为列
  y[(i%rank)*rank+(rank-(i/rank)-1) ] = 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;
}

(0)

相关推荐

  • 方阵顺时针旋转的实现代码

    例如,如下的方阵: 1  2  3  4 5  6  7  8 9 10 11 12 13 14 15 16 顺时针旋转,却是如下结果: 13  9  5  114 10  6  215 11  7  316 12  8  4 复制代码 代码如下: #include <stdio.h>void rotate(int* x, int rank){ int* y = (int*)malloc(sizeof(int) * rank * rank); for(int i=0; i<rank *

  • java蓝桥杯历年真题及答案整理(小结)

    蓝桥杯java历年真题及答案整理(闭关一个月,呕心沥血整理出来的) 1 全排列 是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种.如:给定 A.B.C三个不同的字符,则结果为:ABC.ACB.BAC.BCA.CAB.CBA一共3!=3*2=6种情况. package Question1_9; import java.util.Scanner; import java.util.Vector; public class Question1 { public static

  • Android Camera实现旋转角度

    本文实例为大家分享了Android Camera实现旋转角度的具体代码,供大家参考,具体内容如下 概述 相机图像数据都是来自于图像传感器(Image Sensor),相机模组出厂的时候有一个默认的取景方向,一般为以下两种,请留意相机模组中小人的方向 Sensor 安装默认都是 Sensor 的长边与手机的长边平行 将上述图1的模组装入手机,结果为下图 两颗模组不一定如图左右摆放,也可以上下摆放,只要遵循长边对长边即可 此时使用后摄预览或拍照,取景方向是正常的,而手机目前相对自然方向(正常竖屏使用

  • C语言算法练习之求二维数组最值问题

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.定义宏和声明数组 3.3.声明相关变量 3.4.输入数组(方阵)的阶 3.5.输出 “输入的数组” 3.6.计算每行最大数据中的 最小的那一个数字 3.7.计算每行最小数据中的 最大的那一个数字 四.经典算法实例程序 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 求二维数组最大最小值 问题的描述 如下几点所示 1.在n 行 n 列的二维整数数组中,按以下要求选出两个数. 2.

  • 20行js代码实现的贪吃蛇小游戏

    前言 最近在csdn上看到一位大神用20行代码就写出了一个贪吃蛇的小游戏,感觉被惊艳到了,就试着读了一下这段代码,阅读过程中不断为作者写法的巧妙而叫绝,其中我发现自己对运算符优先级和一些js的技巧不是很清楚,所以看完之后决定把思路分享出来,方便和我一样的小白学习. 我对代码稍稍做了些修改,并添加了一些注释,方便理解. 示例代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="

  • 基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)

    正文:为了使层次分明及便于阅读,  整个解决方案如下: 其中BitmapCutter.Core是图片的服务器端处理程序, 类图为: 简单说明下, 更多说明可查看源码注释 : Cutter为裁剪对象, 用于存储客户端通过AJAX提交的数据. Helper为图片处理类, 包括图片翻转(RotateImage()), 图片裁剪(GenerateBitmap()). Callback为服务器端图片处理类, 通过使用Cutter封装客户端AJAX提交的数据, 然后调用Helper中的方法来完成图片处理.

  • 微信小程序 animation API详解及实例代码

    动画水还是比较深的,这里只是简单介绍下小程序中动画的一些属性和注意事项,做动画前一定要整理好思路将动画一步步分解,再进行组合!这里只做引入. wx.createAnimation(object) 看官方介绍 1.创建一个动画实例animation.调用实例的方法来描述动画.最后通过动画实例的export方法导出动画数据传递给组件的animation属性. 2.调用动画操作方法后要调用 step() 来表示一组动画完成,可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画

  • javascript圆盘抽奖程序实现原理和完整代码例子

    效果预览: 一.模拟抽奖的实现过程 旋转原理:当支持CSS3属性采用transform: rotate(角度deg)设置,当角度为正数时顺时针旋转,当为负数时逆时针旋转.如果是IE8及其以下,采用采用绝对定位设置top和left,模拟角度旋转. run方法,参数angle指角度 复制代码 代码如下: function run(angle) {                    if (isIE) {                        cosDeg = Math.cos(angle

  • javascript+css3开发打气球小游戏完整代码

    效果知识点: css3画气球, 自定义属性运用,随机阵列, DOM元素操作,高级回调函数与参数复传,动态布局,鼠标事件,定时器运用,CSS3新增样式等. css代码如下: <style> {margin:0;padding:0;} body{background:#434343;overflow:hidden} .balloon{ position:absolute; left:0; top:0; margin:auto; width:160px; height:160px; 圆角: 左上 右

  • p5.js 毕达哥拉斯树的实现代码

    本文介绍了p5.js 毕达哥拉斯树的实现代码,分享给大家,具体如下: 效果如下: 主要方法 translate() rotate() rect() push() pop() map() 主要思想 递归 草图 过程分解 一.毕达哥拉斯树的递归函数 function Pythagorian(x){ noStroke(); fill(107, 142, 35,map(x, 0, a, 150, 255));//根据正方形边长设置填充色 rect(0,0,x,x);//绘制当前的正方形 if(x <=

随机推荐