首页 > 滴滴笔试答案分享
头像
wagnzitiansky
编辑于 2020-08-21 20:51
+ 关注

滴滴笔试答案分享

现在考试已经结束了吧,那分享一下我的做法吧

滴滴笔试分享

第一题

n = input()
g = input().split()
y = input().split()

flag = False

gh = []
gl = []
yh = []
yl = []

# 找出跳高成绩 比 x 好的和差的
for ch in g:
    if ch == 'X':
        flag = True
    if not flag:
        gh.append(ch)
    if flag:
        if ch != 'X':
            gl.append(ch)  

flag = False

# 找出跳远成绩比x好的和差的
for ch in y:
    if ch == 'X':
        flag = True
    if not flag:
        yh.append(ch)
    if flag:
        if ch != 'X':
            yl.append(ch)  




h = [ch for ch in gh if ch in yh]
l = [ch for ch in gl if ch in yl]


print(len(h) + 1, end=' ')
print(int(n) - len(l))

第二题

#include <iostream>


using namespace std;
const int N = 12;
long long g[N][N];
long long num[N * N];

int main(){

    int n;
    scanf("%d", &n);

    num[1] = 1;
    num[2] = 1;

    // 求斐波那契数列
    for(int i = 3; i <= n * n; i ++){
        num[i] = num[i - 1] + num[i - 2];
    }

    int cnt = n * n;

    int dx[4] = {0, 1, 0, -1};
    int dy[4] = {1, 0, -1, 0};

    // 讲数列填入数组
    for(int i = 0, d = 0, k = cnt, x = 0, y = 0; k > 0; k --){
        g[x][y] = num[k];
        int nx = x + dx[d];
        int ny = y + dy[d];
        if(nx < 0 || nx >= n || ny < 0 || ny >= n || g[nx][ny] != 0){
            d = (d + 1) % 4;
            nx = x + dx[d];
            ny = y + dy[d];
        }
        x = nx;
        y = ny;
    }

    // 输出
    for(int i = 0; i < n; i ++){
        for(int j = 0; j < n; j ++){
            printf("%lld ", g[i][j]);
        }
        puts("");
    }

    return 0;
}

全部评论

(8) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐