远景能源物联网2019秋招软件题笔试题题解(8月26日)

//选择题浪费的时间太多,编程部分一直在抠边界没有做完编程题只AC了第二题,第一题记了题目查了一下答案;
//2.有一个N*N的矩阵,将其顺时针旋转90°,要求原地改变,不使用额外空间。
//测试样例:
//输入:{{1,2,3},{4,5,6},{7,8,9},3}
//返回:{{7,4,1},{8,5,2},{9,6,3}}
//思路:转圈打印,从外至内,只需要一个额外变量即可。

vector<vector<int> > transformImage(vector<vector<int> > mat, int n) {
    // write code here
    for (int i = 0; i < n / 2;i++)
    {
        for (int j = i; j<n - 1 - i; j++)
        {
            int temp = mat[i][j];
            mat[i][j] = mat[n - 1 - j][i];
            mat[n - 1 - j][i] = mat[n - 1 - i][n - 1 - j];
            mat[n - 1 - i][n - 1 - j] = mat[j][n - 1 - i];
            mat[j][n - 1 - i] = temp;
        }
    }
    return mat;
}
//1. 五子棋:(牛客原题可搜)输入有多组数据,每组数据为一张20x20的棋盘。
//其中黑子用“*”表示,白子用“+”表示,空白位置用“.”表示。 如果棋盘上存在五子连珠(无论哪种颜色的棋子),输入“Yes”,否则输出“No”。
#include<bits/stdc++.h>
using namespace std;
 
int main(int argc, char** argv)
{
    vector<vector<char>> checkBoard(20, vector<char>(20));
 
    char c;
    while ((c = getchar()) != EOF)
    {
        ungetc(c,stdin);
        for (int i = 0; i < 20; ++i)
        {
            for (int j = 0; j < 20; ++j)
            {
                c = getchar();
                checkBoard[i][j] = c;
            }
            getchar();
        }
 
        bool found = false;
        for (int i = 0; i < 20; ++i)
        {
            if (found) break;
            for (int j = 0; j < 20; ++j)
            {
                if (checkBoard[i][j] == '.') continue;
                c = checkBoard[i][j];
                checkBoard[i][j] = '.';
                int curCount = 1;
                int x = i + 1;
                while (x < 20 && checkBoard[x][j] == c)
                {
                    checkBoard[x][j] = '.';
                    ++curCount;
                    ++x;
                }
                if (curCount >= 5)
                {
                    found = true;
                    break;
                }
                curCount = 1;
                int y = j + 1;
                while (y < 20 && checkBoard[i][y] == c)
                {
                    checkBoard[i][y] = '.';
                    ++curCount;
                    ++y;
                }
                if (curCount >= 5)
                {
                    found = true;
                    break;
                }
                curCount = 1;
                x = i + 1, y = j + 1;
                while (x < 20 && y < 20 && checkBoard[x][y] == c)
                {
                    checkBoard[x][y] = '.';
                    ++curCount;
                    ++x; ++y;
                }
                if (curCount >= 5)
                {
                    found = true;
                    break;
                }
            }
        }
 
        if (found) cout << "Yes" << endl;
        else cout << "No" << endl;
    }
 
    return 0;
}

#远景能源有限公司##秋招##题解#
全部评论
//谢谢各位大佬点赞,只求一件卫衣,祝各位点赞的哥哥姐姐们都能拿到称心如意的offer
点赞
送花
回复
分享
发布于 2018-08-26 10:20
这么早就笔试了?
点赞
送花
回复
分享
发布于 2018-08-26 13:17
蔚来
校招火热招聘中
官网直投
请问是只有编程题吗?没选择之类的
点赞
送花
回复
分享
发布于 2018-08-26 13:18
啥时笔试的啊,内推吗
点赞
送花
回复
分享
发布于 2018-08-26 13:25
你什么时候笔试的啊
点赞
送花
回复
分享
发布于 2018-08-26 15:32
说错了,你什么时候投的
点赞
送花
回复
分享
发布于 2018-08-26 15:33
这是你自己做的题吧
点赞
送花
回复
分享
发布于 2018-08-26 22:36
请问一下选择题难吗?投的java岗,会不会考c加加啊?
点赞
送花
回复
分享
发布于 2018-08-27 01:07
上午笔试AC一题,选择2-3题到不会,估计凉了
点赞
送花
回复
分享
发布于 2018-08-27 10:36
逆转魔方
点赞
送花
回复
分享
发布于 2018-08-27 11:12

相关推荐

14 20 评论
分享
牛客网
牛客企业服务