2019上海交大计算机机试题

转自http://www.cskaoyan.com/thread-653896-1-1.html

  • 环境:
    1)C/C++: (通知中为独立的vc++或vc 6.0)实际可用: CodeBlocks+GCC 4.8 Visual Studio 2010
    2)Eclipse Mars + JDK 1.6 (实际上机是JDK1.8 不知评测环境如何)

  • 要求:
    1GB + 10s
    提交源代码+可执行文件(自行测试,无OJ)

  • 题目:

  1. 给出两个数字序列,求最长公共子序列(LCS) 保证一个序列中所有元素都不重复
    第一行给定一个n 为序列的长度
    第二第三行为两个序列
    其中 60% 的用例 n<=1000
    所有用例保证 n<= 1000000
    Sample Input
    5
    1 2 3 4 5
    1 2 3 4 5
    Sample Output
    5
    Sample Input
    5
    1 2 3 5 4
    1 2 3 4 5
    Sample Output
    4

  2. 给出三个杯子的容量ABC , 其中刚开始时C杯是满的,AB是空的。
    现在在保证不会有漏水的情况下进行如下操作:
    将一个杯子x的水倒到另一个杯子y中,如果x空了或者y满了就停止(满足其中一个条件才停下)
    现问C中水量有多少种可能性(A,B,C为非负整数)
    60% case A,B,C<=100
    100% case A,B,C<=4000
    Sample Input
    0 5 5
    Sample Output
    2
    Sample Input
    2 2 4
    Sample Output
    3

  3. 给定一张带权无向完全图,设点的编号为1,2,3,4,5…n(以邻接矩阵的形式给出)
    计算依次拿走第i个点后,剩余所有点到其他点的最短距离之和的总和(具体请看例子)
    例子:
    0 1 1 1
    1 0 1 1
    1 1 0 1
    1 1 1 0
    f1 = 2+2+2 = 6 // 拿走1号点 剩一个三角形,2号到3号距离为1,2号到4号距离为1 所以2号的最短距离之和为2 所以最后总共为6.
    f2 = 1+1 = 2// 在拿走1号点和2号点后 剩一条边, 所以是 1 + 1
    f3 = f4 = 0// 拿走1,2,3号点后 仅剩1个点 拿走所有点后为空。
    结果为 f1+f2+f3+f4 = 8
    aii=0 0 60% n<=100
    100% n<=500
    输入: 第一行为点的个数n,接下来有n行为邻接矩阵
    Sample Input
    4
    0 1 1 1
    1 0 1 1
    1 1 0 1
    1 1 1 0
    Sample Output
    8

你可能感兴趣的:(2019上海交大计算机机试题)