蓝桥杯 方阵旋转

2024-02-01 16:08
文章标签 蓝桥 旋转 方阵

本文主要是介绍蓝桥杯 方阵旋转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题 : 方阵旋转

时间限制: 1 Sec   内存限制: 128 MB
提交: 30   解决: 12
[ 提交][ 状态]

题目描述

对一个方阵转置,就是把原来的行号变列号,原来的列号变行号。 但,如果是对该方阵顺时针旋转(不是转置)。

    下面的代码实现的功能就是要把一个方阵顺时针旋转。

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 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

AC代码:

#include<stdio.h>
#include<stdlib.h>void rotate(int* x, int rank)
{int* y = (int*)malloc(rank * rank * sizeof(int));for(int i=0; i<rank * rank; i++)	{y[(i % 4) * 4 + 3 - (i / 4)] = x[i];}for(int 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("%d ", x[i][j]);}printf("\n");}return 0;
}




题意概括: 将一个方阵顺时针旋转90度


经验总结:
1. 当一些数出现循环递增,比如说:3  7  11  15  2  6  10  14  1  5  9  13  0  4  8  12。 这些书每四个为一组进行递增,此时需要考虑用到取模运算。
2. 而且因为这些数是存在同一个数组里的, 所以以每四个数为一个小组,每一组所加的数要比前面一组少一个1。所以又要用到除以4的情况。

这篇关于蓝桥杯 方阵旋转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/667743

相关文章

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

poj 2187 凸包or旋转qia壳法

题意: 给n(50000)个点,求这些点与点之间距离最大的距离。 解析: 先求凸包然后暴力。 或者旋转卡壳大法。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <s

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

二维旋转公式

二维旋转公式 ros的tf工具包可以很方便的实现任意坐标系之间的坐标转换。但是,如果只是想简单的测试想法,而又不想编写过于庞杂的代码,考虑自己写二维旋转的函数。而与二维旋转问题对偶的另一个问题便是二维坐标系旋转变换。这两个问题的形式基本一样,只是旋转的角度相差一个负号。就是这个容易搞混,所以做个笔记,以备查用。 1. 二维旋转公式(算法) 而(此文只针对二维)旋转则是表示某一坐标点 ( x

算法复杂度 —— 数据结构前言、算法效率、时间复杂度、空间复杂度、常见复杂度对比、复杂度算法题(旋转数组)

目录 一、数据结构前言 1、数据结构 2、算法 3、学习方法 二、 算法效率 引入概念:算法复杂度  三、时间复杂度 1、大O的渐进表示法 2、时间复杂度计算示例  四、空间复杂度 计算示例:空间复杂度 五、常见复杂度对比 六、复杂度算法题(旋转数组) 1、思路1 2、思路2 3、思路3 一、数据结构前言 1、数据结构         数据结构(D