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]);
}
}
}
二维矩阵旋转
题目描述:
给一个
的二维矩阵,将该矩阵顺时针旋转90度。
输入
输入一个
二维矩阵
输出
将输入的二维矩阵顺时针旋转90度
样例输入
样例输出
时间限制: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");
}
}
}
搜索符合用户需求且价格最低的房型
题目描述:
有
种房型,每种房型有如下属性:可入住成人数,可入住儿童数,价格;根据用户输入的
(需入住成人数),
(需入住儿童数),
(需入住几晚),返回
种房型的间数及价格。
输出样例(特别说明):
输入
第一行表示一共有几种房型,设为整型
;
接下来的
行,每行三列分别表示每种房型能够容纳的成人数、能够容纳的儿童数、单价;
最后一行的三列分别表示需要入住的成人数、儿童数,几晚。
输出
打出房型输入的顺序号,顺序号>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
(没有做……有兴趣的朋友可以贴出代码)