浏览器标题切换
浏览器标题切换end

2021.3.7阿里研发笔试第一场 - 研发工程师JAVA (实习生)

有一点比较纳闷的是,这个岗我没投,可能后来被其他部门捞起来了,我记得之前投的岗简历都没过。而且发来的邮件是c++/java,但是笔试界面的标题就是研发工程师JAVA。纳闷

昨天晚上7-8点,一个小时的笔试,两道编程题,开手机监控屏幕监控和摄像头,环境调试也就一分钟左右就ok。

阿里的笔试是测试样例只是用来测试,基本上后台数据是没有测试样例的,所以不会写的话也没法通过输入直接输出去混得分点。

第一道编程题

(没写出来)

题目:给一个 \(n\) ,表示一个 \(n*3\) 的矩形,现在手里有若干张为1、2、3的牌,现在我们需要往每个方格里去放牌,放牌的要求是:当前位置的牌要和它上下左右不一样。问有多少种不同的方法数(方法数对 \(10^9+7\) 取余)。

思路:DFS尝试失败,暴力尝试失败

第二道编程题

(过了20%的数据)

题目:给出 \(n\)\(s\)\(t\),分别表示有 \(n\) 条地铁线,起点,终点。
接下去 \(n*2\) 行,一行先给出一个 \(k\) ,下面一行给出这条地铁线上的 \(k\) 个站点。
如果两条线中有相同的站点,说明可以进行转车。
问:从 \(s\)\(t\) 最少要转几次地铁。

思路1:vector直接写失败,并查集尝试失败。直接写了特殊样例的判断过了20%的数据(不存在 \(s\)\(t\)\(s\)\(t\) 在一条线上)

思路2:后来找了大佬问一下,正确解法应该是:可以把同一条地铁线上的所有站点之间距离设为0,其他站点之间设为1,最后转化图,然后 \(s\)\(t\) 直接转换成最短路就行了。有道理。

我的代码:(过了20%的数据)

#include<iostream>
#include<string.h>
#include<vector>
using namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;

const int N=1e5+10;
int n,s,t;

int main()
{
    bool flag1=0,flag2=0,flag=0;
    scanf("%d %d %d",&n,&s,&t);
    for(int i=0;i<n;i++)
    {
        int k;
        scanf("%d",&k);
        int xx=0,yy=0;
        int x,y;
        cin>>x;
        for(int j=2;j<=k;j++)
        {
            cin>>y;
            if(y==s) flag1=1,xx++;
            if(y==t) flag2=1,yy++;
        }
        if(xx==1&&yy==1) flag=1;
    }
    if(!flag1&&!flag2)
        printf("-1\n");
    else if(flag)
        printf("0\n");
    return 0;
}
posted @ 2021-03-07 09:41  抓水母的派大星  阅读(270)  评论(2编辑  收藏  举报