现在考试已经结束了吧,那分享一下我的做法吧
滴滴笔试分享
第一题
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) 回帖