全国高校绿色计算大赛 预赛第一阶段(C++)第3关:旋转数组
挑战任务
在计算机中,一张数字图像,可以被看做是一个矩阵或者说数组。
学过线性代数的同学对矩阵肯定不陌生。一般来说,图像是一个标准的矩形,有着宽度(width)和高度(height)。而矩阵有着行(row)和列(column),矩阵的操作在数学和计算机中的处理都很常见且成熟,于是很自然的就把图像作为一个矩阵,把对图像的操作转换成对矩阵的操作,实际上所有的图像处理工具都是这么做的。
所以我们如果要对图像进行操作,其实也就是在对一个数组进行操作。
本关要求你编写代码实现对一张图像的90°旋转,即对矩阵的90°旋转。
编程要求
补全函数void rotate(vector<vector<int> >& matrix),实现对输入的数组进行旋转的功能。
注意:
你必须使用原地算法来旋转图像,而不能重新创建一个数组,本关不需要你输出数组,只需要修改数组metrix即可。
测试说明
输入:3 3
1 2 34 5 67 8 9
原地旋转,使其变为:
7 4 18 5 29 6 3
输入的3 3是用作构建数组的不会作为函数的参数输入,可以忽略。
#ifndef _TEST
#define _TEST
#include <iostream>
#include <vector>
using namespace std; class Task{
public:
void rotate(vector<vector<int> >& matrix){
/********* Begin *********/
int length = matrix.size(); for (int i = 0; i < length; i++) {
for (int j = 0; j < length - i; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[length - j - 1][length - i - 1];
matrix[length - j - 1][length - i - 1] = tmp;
}
} for (int i = 0; i < length; i++) {
for (int j = 0; j < length / 2; j++) {
int tmp = matrix[j][i];
matrix[j][i] = matrix[length - j - 1][i];
matrix[length - j - 1][i] = tmp;
}
} /********* End *********/ }
};
#endif
#ifndef _TEST
#define _TEST
#include <iostream>
#include <vector>
using namespace std; class Task{
public:
vector<char> inversion(string str){
vector <char> vec;
int index = str.length();
while(index--){
vec.push_back(str[index]);
}
return vec;
}
};
#endif
#include <iostream>
#include <vector>
#include <stdio.h>
#include "Task.hpp" using namespace std; int main(){
string str;
getline(cin,str); Task tt;
vector <char> result;
result = tt.inversion(str);
for(int i = 0; i<str.length();i++){
cout << result[i];
}
cout << endl;
}
运行结果

全国高校绿色计算大赛 预赛第一阶段(C++)第3关:旋转数组的更多相关文章
- 全国高校绿色计算大赛 预赛第一阶段(Python)
第1关将字符串反转 #!/usr/bin/env python # -*- coding: utf-8 -*- class Task: def inversion(self, str): # **** ...
- 全国高校绿色计算大赛 预赛第一阶段(C++)第4关:计算日期
挑战任务 我们吃的食物都有保质期,现在食品监督管理局想要制作一个能准确计算食品过期日期的小程序,需要请你来进行设计. 例如:A食品在2018年1月1日生产,保质期是20天,则它的过期日期在2018年1 ...
- 全国高校绿色计算大赛 预赛第一阶段(C++)第2关:扔桃子
挑战任务 动物园有一只小猴子喜欢吃桃子,不过它有个很独特的习惯,每次都把找到的桃子分成相等的两份,吃掉一份,留一份.如果不能等分,小猴子就会丢掉一个然后再分.第二天再继续这个过程,直到最后剩一个桃子了 ...
- 全国高校绿色计算大赛 预赛第一阶段(C++)第1关:将字符串反转
挑战任务 将输入的字符串str进行反转. 编程要求 补全右侧vector<char> inversion(string str)函数实现字符串的反转并返回反转之后的字符串,其中函数参数st ...
- 全国高校绿色计算大赛 预赛第三阶段(Python)(随机数)
只提交了随机数 (真心不会 T-T ) import csv import random import pandas as pd import numpy as np # 预测结果文件:src/ste ...
- 全国高校绿色计算大赛 预赛第二阶段(Python)第1关:统计分数的麻烦
挑战任务 “绿盟杯”比赛过后,赛事承办方的各位工作人员们就开始分头统计各个参赛队伍和同学的成绩了.赛事规模很大,有10000个队伍参加.经过工作人员认真负责的统计,本来已经统计好了这一万个队伍的分数和 ...
- 全国高校绿色计算大赛 预赛第二阶段(Python)
第1关统计分数的麻烦 class Task: def get_lost_scores(self, scores): s = "" index = [1 for i in range ...
- 全国绿色计算大赛 模拟赛第一阶段(C++)第1关:求和
挑战任务 这次“绿盟杯”大赛,小明作为参赛选手在练习的时候遇到一个问题,他要对一个范围的两个数进行数位的累加,例如有两个数 15,19 则 他们的数位和应该为:1+5+1+6+1+7+1+8+1+9, ...
- 全国绿色计算大赛 模拟赛第一阶段(Python)
第1关求和 class Task: def getSum(self, num1, num2): sum = 0 for i in range(num1, num2 + 1): while (i != ...
随机推荐
- 15. combobox、combotree获取显示值和value值方式
$('#form1 #clsName').combobox('getValue'); $('#form1 #clsName').combobox('getText'); $('#form1 #clsN ...
- 34. Win7_x64安装oracle11g出现DIM-00019
Win7_x64安装oracle11g出现如下异常处理方式 DIM-00019:创建服务时出错. O/S-ERROR:(OS 1726)远程过程调用失败. 点击弹出的错误框上的确定按钮后,继续弹出错误 ...
- ASP.NET 使用alert弹出对话框后,CSS样式失效,字体变大的解决方法
protected void ASPxButton2_Click(object sender, EventArgs e) { //Response.Write("<script> ...
- Linux 用户、权限
用户:uid 保存在 /etc/passwd 用户分类: 管理员 uid--0 普通用户 --系统用户 uid 1-499 --一般用户 uid 500-60000 组:gid 保存在/etc/ ...
- element el-upload组件获取文件名
组件的连接:http://element-cn.eleme.io/#/zh-CN/component/upload 需求:点x按钮,获取文件名传到后端服务,把文件从服务器删除 分析: 仔细看文档,会发 ...
- vue下载和上传excle数据文件,解析excel文件数据并存在数据库中
下载: VUE: window.open("xxxx/downloadOldTaskDataFile.do_", "_blank"); JAVA: /** * ...
- WPF线性渐变画刷应用之——炫彩线条
效果图: Xaml代码: <Rectangle Width="800" Height="10"> <Rectangle.Fill> &l ...
- 模板引擎Dot
Dot.js 很轻,处理速度也快,作为将json数据赋值到html页面的最好帮手. html5新引入的<template></template>就不用原先的<script ...
- leetcode 错误题解,反面教材 Gas Station
class Solution { public: int canCompleteCircuit(vector<int>& gas, vector<int>& c ...
- GCD 常用API 总结
dispatch_sync:同步操作,会阻塞当前线程 dispatch_async:普通的异步操作,也就是在指定的队列中添加一个block操作,不会阻塞当前线程 dispatch_group_asyn ...