携程旅行春招在线考试

  2018年3月29日19:00–20:30,参与了携程旅行春招在线考试,第一部分20道选择题,第二部分3道编程题。现将编程题记录如下:

移动数组中的“0”

题目描述:
  给定一个整型数组,将数组中所有的“0”移动到末尾,非“0”项保持顺序不变,在原始数组上进行移动操作,勿创建新的数组

输入
第一行是数组长度
后续每一行是数组的一条记录

输出
调整后的数组内容

样例输入

4
0
7
0
2

样例输出

7
2
0
0

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int zero = 0;
        int arr[] = new int[n];
        for (int i = 0, j = 0; i < n; i++) {
            int scan = scanner.nextInt();
            if (scan == 0) {
                zero++;
            } else {
                arr[j++] = scan;
            }
        }
        scanner.close();
        for (int j = zero; j > 0; j--) {
            arr[n - j] = 0;
        }
        for (int k = 0; k < n; k++) {
            System.out.println(arr[k]);
        }
    }
}

二维矩阵旋转

题目描述:
  给一个 N N 的二维矩阵,将该矩阵顺时针旋转90度。

输入
输入一个 N N 二维矩阵

输出
将输入的二维矩阵顺时针旋转90度

样例输入

1 4 7 2 5 8 3 6 9

样例输出

3 2 1 6 5 4 9 8 7

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        Map<Integer, String> map = new HashMap<>();
        int N = 0;

        while (scanner.hasNext()) {
            map.put(N++, scanner.next());
        }
        scanner.close();

        int n = (int) Math.sqrt(N);
        String num[][] = new String[n][n];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                num[i][j] = map.get(i * n + j);
            }
        }

        for (int p = 0; p < n; p++) {
            for (int q = n - 1; q >= 0; q--) {
                System.out.print(num[q][p]);
                System.out.print("\t");
            }
            System.out.print("\n");
        }
    }
}

搜索符合用户需求且价格最低的房型

题目描述:
  有 N 种房型,每种房型有如下属性:可入住成人数,可入住儿童数,价格;根据用户输入的 X (需入住成人数), Y (需入住儿童数), Z (需入住几晚),返回 N 种房型的间数及价格。
输出样例(特别说明):
说明

输入
第一行表示一共有几种房型,设为整型 N
接下来的 N 行,每行三列分别表示每种房型能够容纳的成人数、能够容纳的儿童数、单价;
最后一行的三列分别表示需要入住的成人数、儿童数,几晚。

输出
打出房型输入的顺序号,顺序号>0,表示选择了此房型数量;
顺序号为0表示未选择此房型,最后一列为总价格。

样例输入

2
2 2 100
4 3 180
3 2 1

样例输出
正常输出:

0,1,180.0

异常输出:

-1

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

(没有做……有兴趣的朋友可以贴出代码)

猜你喜欢

转载自blog.csdn.net/u012102104/article/details/79749780