九度OJ 1171:C翻转 (矩阵计算)_q*4矩阵大小写翻转 oj-程序员宅基地

技术标签: 九度  九度Online Judge题解  c语言  矩阵计算  九度OJ  OJ  

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:4649

解决:1530

题目描述:

首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

操作类型有四种:  
1 2 表示:90度,顺时针,翻转4个数  
1 3 表示:90度,顺时针,翻转9个数  
2 2 表示:90度,逆时针,翻转4个数  
2 3 表示:90度,逆时针,翻转9个数 

输入:

输入有多组数据。
每组输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

输出:

输出翻转后的数组。

样例输入:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
1 3 1 1
样例输出:
11 6 1 4 5
12 7 2 9 10
13 8 3 14 15
16 17 18 19 20
21 22 23 24 25
来源:
2010年北京邮电大学计算机研究生机试真题

思路:

总体思路是每次旋转90度,超过就多次旋转。可能犯错的细节较多,多调试。


代码:

#include <stdio.h>
 
#define M 5
 
struct point {
    int i;
    int j;
};
 
struct point rotate(int n, int i, int j, int x, int y, int degree)
{
    struct point p;
    p.i = i;
    p.j = j;
    int tmp;
    for (int k=1; k<=degree/90; k++)
    {
        tmp = p.i;
        p.i = (x-y) + p.j;
        p.j = (x-1) + (y-1) + n-1 - tmp;
    }
    return p;
}
 
int main(void)
{
    int i, j;
    int d, n, x, y;
    int a[M][M], b[M][M];
    struct point p;
    int degree;
 
    while (scanf("%d", &a[0][0]) != EOF)
    {
        for(i=0; i<M; i++)
        {
            for(j=0; j<M; j++)
            {
                if (i == 0 && j == 0)
                    continue;
                scanf("%d", &a[i][j]);
            }
        }
        scanf("%d%d%d%d", &d, &n, &x, &y);
 
        if (d == 1)
            degree = 90;
        else
            degree = 270;
 
        for(i=0; i<M; i++)
        {
            for(j=0; j<M; j++)
            {
                if (i<x-1 || i>=x-1+n || j<y-1 || j>=y-1+n)
                    b[i][j] = a[i][j];
                else
                {
                    p = rotate(n, i, j, x, y, degree);
                    b[p.i][p.j] = a[i][j];
                }
            }
        }
        //printf("i=%d, j=%d\n", i, j);
        for(i=0; i<M; i++)
        {
            for(j=0; j<M; j++)
            {
                if (j != 0)
                    printf(" ");
                printf("%d", b[i][j]);
            }
            printf("\n");
        }
    }
 
    return 0;
}
/**************************************************************
    Problem: 1171
    User: liangrx06
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:912 kb
****************************************************************/


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/thudaliangrx/article/details/49420597

智能推荐

[389]python引入模块报错ValueError: attempted relative import beyond top-level package-程序员宅基地

文章浏览阅读5.9w次,点赞19次,收藏43次。解决方法:在文件中加入下面两行代码,使用绝对路径import sys,ossys.path.append(os.path.dirname(__file__) + os.sep + '../')在练习Python中package的相对导入时,即from . import XXXorfrom .. import XXX  时会遇到这样两个错误:SystemErro..._valueerror: attempted relative import beyond top-level package

DVWA—【文件包含漏洞】实验详解_<?php // the page we wish to display $file = $_get-程序员宅基地

文章浏览阅读1.4k次,点赞3次,收藏3次。LOW实验关键代码<?php $file = $_GET['page'];//The page we wish to display?>这是一个典型的在动态网页中的用法,就像注我上一篇文章【文件包含漏洞原理】所讲,写入我们想要显示的页面。这里就是对用户的输入完全信任,因此就导致可以包含任意页面。程序员在写程序的时候要站在不安全的角度上,而不是用户的角度上,这是从网站安全的角度来说。实验:接下来通过文件包含漏洞,查看位于根目录下的1.txt文件的内容,同过这两个实验对比总结远_<?php // the page we wish to display $file = $_get[ 'page' ]; // input valid</div>

cordova打包vue项目为app_cordova 打包出来是 aap格式-程序员宅基地

文章浏览阅读4k次。一、创建cordova项目1、创建项目前提条件(1)node.js详细安装步骤可参考node.js官网:https://nodejs.org/en/下载安装成功后,在命令窗口中输入npm -v查看是否成功(2)JDK在官网下载安装:https://www.oracle.com/index.html并配置环境变量(重要)成功后,在命令窗口输入java 和javac。出现类似信息则表示安装成功。(3)..._cordova 打包出来是 aap格式

bootstrap.yml不支持logback.xml或者logback-spring.xml配置_${nacos_host:127.0.0.1}-程序员宅基地

文章浏览阅读2k次。一、背景最近一个springboot单体架构的项目改造为springcloud微服务项目的过程中,为了使用nacos的配置中心,同时又想本地开发环境不依赖于nacos,就把application.yml改造成了bootstrap.yml,同时多环境配置application-dev.yml也改为了bootstrap-dev.yml。初始环境配置文件结构如下:二、logback.xml不生效问题微服务改造完成后,本地开发环境logback.xml不生效,最明显的特征是配置的SQL打印没有了,而服务器_${nacos_host:127.0.0.1}

Android入门项目(六)Android的wifi开发,2024年最新快手面试java-程序员宅基地

文章浏览阅读616次,点赞28次,收藏13次。这里我特地整理了一份《Android开发核心知识点笔记》,里面就包含了自定义View相关的内容除了这份笔记,还给大家分享Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~

推荐一款Gin+Vue+ElementUI实现的智慧城市后台管理系统_vue智慧城市项目-程序员宅基地

文章浏览阅读496次。是一款基于Golang、Gin、Xorm、Vue、ElementUI、MySQL等技术栈开发平台框架,拥有完善的(RBAC)权限架构和基础核心管理模块,为了缩短研发周期,系统框架集成了代码生成器,内置平台自定义研发的模板引擎,可以一键CRUD生成整个模块的全部代码,本框架为一站式系统框架开发平台,可以帮助开发者提升开发效率、降低研发成本,同时便于后期的系统维护升级。......_vue智慧城市项目

随便推点

QuasarCli q-table自定义插槽内容的使用VUE3_quasar table top-row-程序员宅基地

文章浏览阅读1.2k次。QuasarClitable自定义插槽内容的使用在使用QuasarCli开发时候遇到table数据不显示问题,组件部分在此部分 v-slot插槽top=>top-row=>body=>bottom分别对应表头,表头下面和表格可以在body插槽中定义表格的样式<template> <div class="q-pa-md"> <q-table title="Treats" :rows="rows" :_quasar table top-row

云计算虚拟化与云平台如何对接安可领域?-程序员宅基地

文章浏览阅读4.2k次。在本月举办的“2018四季度安全可靠技术和应用研讨会”上,作为安可联盟成员,云宏隆重发布了“全融合安可云”解决方案,得到了工信部、广东省领导的高度好评以及与会联盟单位的高度关注。在信息化发展的浪潮中,云计算支撑着相关领域业务的高速发展,云计算关键技术更是新一代信息技术领域不可或缺的一部分。安可领域要实现创新发展,采用安全可靠云计算方案便显得尤为关键。云宏安可云解决方案,即为..._安可云

mybatis-plus实体类中字段和数据库中字段名不对应解决办法_mybatis-plus 数据库名与实体不一样-程序员宅基地

文章浏览阅读1.3w次,点赞10次,收藏11次。在使用mybatis或者mybatis-plus时候,有些时候会出现数据库的字段名和实体类的字段名不一致的情况,如果运行那么这个字段就会无法进行自动映射而报错。这里就以我的数据库name字段名和这里的实体类的u_name字段名为例。解决办法有以下三种方法一:将数据库中的字段和实体类中的字段名修改成一样的名字方法二:如果是自定以mapper.xml文件中手写的sql查询语句,可以给字段起一个别名例如这里就可以写成select name as u_name from…方法三:使用注解._mybatis-plus 数据库名与实体不一样

谁也不服,只服Alibaba技术官,Kafka的精髓浓缩进一本“限量笔记”里_alibaba kafka不是中国的嘛-程序员宅基地

文章浏览阅读101次。前言分布式,是程序员必备技能之一,在面试过程中属于必备类的,在工作中更是会经常用到。而Kafka是一个分布式的基于发布订阅的消息队列,目前它的魅力是无穷的,对于Kafka的奥秘,还需要我们细细去探寻。要谈对Kafka有多熟悉,我相信还是阿里的大佬们最有发言权,所以今天分享的内容,就是Alibaba内部供应的“限量笔记”,关于Kafka的精髓全部写在这里面了,不得不感叹:不愧是Alibaba的技术官啊,真的服了!关于这份Kafka限量笔记,我只能在文章中展示部分的章节内容和核心截图,如果你需要完_alibaba kafka不是中国的嘛

LeetCode第131题—分隔回文串—Python实现_python 131leetcode-程序员宅基地

文章浏览阅读427次。title: LeetCode No.131categories:OJLeetCodetags:ProgramingLeetCodeOJLeetCode第131题—分隔回文串昨天端午鸽了塞自己代码的开源仓库:click here 欢迎Star和Fork ????题目描述给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = "aab"输出:[["a",_python 131leetcode

Mysql-使用avg()与if()函数计算正确率_avg(if())-程序员宅基地

文章浏览阅读2.4k次。计算上表中不同难度的题目答题准确率。selectq.difficult_level,avg(if(q.result="right",1,0)) correct_rate#此处平均值计算结果=正确的题目数量/总答题数量from question_detail qgroup by q.difficult_level_avg(if())

推荐文章

热门文章

相关标签