• 网易2019秋招--翻转翻转


    分析:从题目中就可以看出这是一道找规律的题,不能直接硬算,数据太大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 <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;
    }


          

    不一样的烟火
  • 相关阅读:
    Python中Pickle模块的dump()方法和load()方法
    python的@classmethod和@staticmethod的区别和使用
    Python 正则表达式
    Python 函数
    Python time和datetime
    python 文件操作
    Python 集合的交差并补操作及方法
    python 字典相关函数和操作方法
    python 列表(list)操作及函数
    python 深浅拷贝
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11369044.html
Copyright © 2020-2023  润新知