博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网易2019秋招--翻转翻转
阅读量:5035 次
发布时间:2019-06-12

本文共 723 字,大约阅读时间需要 2 分钟。

分析:从题目中就可以看出这是一道找规律的题,不能直接硬算,数据太大1e9,你开数组就是找死。。。。

注意:n*m的矩阵和m*n的矩阵在这里是一样的,因为一个元素的最后状态只与与其相邻的元素有关(所以只讨论m>=n情况)

翻转次数 = 相邻元素数 + 1(自身翻转一次)

一般矩阵:位于中间的元素周围有8个元素,所以一共被翻转了9次

     位于第一行或者最后一行的元素(除过第一个和最后一个)相邻的元素有5个,所以被翻转了6次,第一个和最后一个(就是4个角)相邻元素有3个,被翻转了4次

     同理第一列和最后一列(除过第一个和最后一个)也被翻转6次

示例(数字是翻转次数):

 

翻转偶数次相当于没翻转所以只有中间的元素翻转了(第一行、最后一行、第一列、最后一列没被翻转),所以翻转元素数量是(m-2)*(n-2)

1*1矩阵:只有一个元素,没相邻元素,所以翻转次数是1次,翻转元素数量:1

 

1*m矩阵:首元素和末尾元素只有一个相邻元素,翻转次数2次,中间的有2个相邻元素,翻转3次,所以翻转的元素就是m-2

 

c++代码如下:

#include 
using namespace std; int main(){ long long n,m,t;//注意是long long while(t--){ cin>>n>>m; if(n>m) swap(m,n); if(n==1&&m==1){ cout<<1<

 

      

转载于:https://www.cnblogs.com/cstdio1/p/11369044.html

你可能感兴趣的文章
主从复制报错
查看>>
java多线程快速入门(六)
查看>>
微信小程序地图总结
查看>>
第一次作业 1.8
查看>>
Java操作redis
查看>>
理解并设计rest/restful风格接口
查看>>
PHP preg_match正则表达式的使用
查看>>
Permutation Recovery
查看>>
WPF,Silverlight与XAML读书笔记第二十 - 控件之二 – 内容控件(命令控件)
查看>>
js补充之作用域
查看>>
12.4号
查看>>
安装JMeter
查看>>
虚方法与抽象方法有什么区别
查看>>
20181126-java-面试知识-收集
查看>>
POJ-3295 Tautology 枚举+DFS
查看>>
KRPano多屏互动原理
查看>>
KRPano动态热点专用素材图50多个,加动态热点使用方法
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>