翻转翻转

Posted cstdio1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻转翻转相关的知识,希望对你有一定的参考价值。

技术图片

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

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

一般矩阵:位于中间的元素周围有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 <bits/stdc++.h>

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<<endl;
    continue;    
    
    else if(n==1)
    cout<<m-2<<endl;
    continue;    
    
    else
        cout<<(m-2)*(n-2);
        continue;
     
    
    return 0;

 


      

以上是关于翻转翻转的主要内容,如果未能解决你的问题,请参考以下文章

CSS3翻转图片问题

实现翻转字符串的方法,包含水平翻转(支持中文)

怎样用CSS实现图片翻转

Swift - 实现图片(UIImage)的水平翻转(镜像),垂直翻转

如何水平翻转图像以将翻转的图像保存在相册中?

翻转问题(开关,开灯问题)求解技巧