头条笔试

//只写了第一道
//AC代码,记录一下证明我参加了-_-
//bfs算法,输入让我搞了很久,心痛
#include <iostream>
#include<utility>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int num[12][12];
int state[12][12];
int offset[4][2]={1,0,0,1,-1,0,0,-1};
int main()
{
    int i,j,step=0;
    char ch;
    memset(num,0,sizeof(num));
    memset(state,0,sizeof(state));
    cin.get(ch);
    for(i=0;i<12;++i)
    {
        for(j=0;j<12;)
        {
            if(ch!=' '&&ch!='\n') {num[i][j]=ch-'0';++j;}
            if(ch=='\n') break;
            cin.get(ch);
        }
       cin.get(ch);
       if(ch=='\n') break;
    }
    bool flag=false;
    int cnt2=0,cnt2_temp=0;
    queue<pair<int,int> >q;
    for(int t=0;t<=i;++t)
        for(int s=0;s<j;++s)
        {
            if(num[t][s]==2) {
                    q.push(pair<int,int>(t,s));
                    ++cnt2;
                    state[t][s]=1;
            }
        }
    while(!q.empty())
    {
        pair<int,int>f=q.front();
        q.pop();
        --cnt2;
                for(int k=0;k<4;++k)
                {
                    int x=f.first+offset[k][0];
                    int y=f.second+offset[k][1];
                    if(x<=i&&y<j&&state[x][y]==0&&num[x][y]==1)
                    {
                    flag=true;
                    num[x][y]=2;
                    state[x][y]=1;
                    q.push(pair<int,int>(x,y));
                    ++cnt2_temp;
                    }
                }
        if(cnt2<=0){
            if(!flag) break;
            if(flag)
            {
                 cnt2=cnt2_temp;
                 cnt2_temp=0;
                 ++step;
                 flag=false;
            }
        }
    }
    bool ishas=true;
    for(int t=0;t<=i;++t)
    {
        for(int s=0;s<j;++s)
        if(num[t][s]==1) ishas=false;
    }
    if(ishas)
    {
        if(step<=0) cout<<-1<<endl;
        else cout<<step<<endl;
    }
    else cout<<-1<<endl;
    return 0;
}

#笔试题目##春招#
全部评论
后面的要理解题意都感觉不容易更别说做了,唉!
点赞 回复 分享
发布于 2019-04-14 12:05
我也是只过了第一题
点赞 回复 分享
发布于 2019-04-14 12:03
我也是只过了一道😥
点赞 回复 分享
发布于 2019-04-14 12:03
我是一个题都没做空完整,开始以为和leecode的题一样,结果发现还是有很大不一样
点赞 回复 分享
发布于 2019-04-14 12:04
请问一下第一题的题目是什么规则,我想复盘一下,想不起来那几个规则了
点赞 回复 分享
发布于 2019-04-15 14:53

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
点赞 评论 收藏
分享
一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
点赞 4 评论
分享
牛客网
牛客企业服务