呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

【2018秋招笔试】2018.9.7 哔哩哔哩 算法工程师

前言

哔哩哔哩笔试题很实在,直接出了三道编程题。

题目不是太难,一道简单dp,两道模拟题,全部AC。

第一题

代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAXN 10010
int dp[2][MAXN];
int Min(int v,int u){
    if(v<u)
        return v;
    return u;
}

int main()
{
    int i,j,Case,n;
    scanf("%d",&n);
    int v;
    int now=1,pre=0;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            if(j==1)
                scanf("%d",&v);
            else scanf(",%d",&v);
            if(i==1 && j==1)
                dp[now][j]=v;
            else {
                if(j==1)
                    dp[now][j]=dp[pre][j]+v;
                else if(i==1)
                    dp[now][j]=dp[now][j-1]+v;
                else 
                    dp[now][j]=Min(dp[pre][j],dp[now][j-1])+v;
            }

        }
        int t=now;
            now=pre;
            pre=t;
    }
    printf("%d\n",dp[pre][n]);
    return 0;

    //return 0;
}

第二题

代码:

忘记保存了……

第三题

代码:

#include<stdio.h>
#include<stdlib.h>
#include <string.h>
const int maxn=3002;
int a[maxn][maxn];
bool vis[maxn][maxn];

int main()
{
    int n,m;
    int i,j;
    while(scanf("%d%d",&m,&n)!=EOF && (n!=-1 || m!=-1)){
        for(i=1;i<=m;i++)
            for(j=1;j<=n;j++)
                scanf("%d",&a[i][j]);
        int cnt=0;
        memset(vis,0,sizeof(vis));
        i=1;j=1;
        printf("%d",a[1][1]);
        cnt=1;
        vis[1][1]=1;
        while(cnt<n*m){
            while(j+1<=n && vis[i][j+1]==0){
                j++;cnt++;
                printf(",%d",a[i][j]);
                vis[i][j]=1;
            }
            while(i+1<=m && vis[i+1][j]==0){
                i++;cnt++;
                printf(",%d",a[i][j]);
                vis[i][j]=1;
            }
            while(j-1>=1 && vis[i][j-1]==0){
                j--;cnt++;
                printf(",%d",a[i][j]);
                vis[i][j]=1;
            }
            while(i-1>=1 && vis[i-1][j]==0){
                i--;cnt++;
                printf(",%d",a[i][j]);
                vis[i][j]=1;
            }
        }
        puts("");
    }

    return 0;
}

原创声明

转载请注明:呓语 » 【2018秋招笔试】2018.9.7 哔哩哔哩 算法工程师