股票利润
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
假如一个数组中存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数)。只允许一次买入和一次卖出,请提供一个算法,计算出通过卖出和买入可以得到的最大利润
输入
价格序列,用,号隔开
输出
最大的可能利润
样例输入
2,3,2,4
样例输出
二分查找
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
请写一个二分查找算法查找一个数最先出现的index,如果数不在集合中需要返回(-1)-当前数应该出现的位置。例如 [1,3,6],查找5,5应该是在index=2的位置但并不在集合中。返回(-1)-2 = -3。
输入
第一行读入一个整数x,表示要查找的数;第二行读入一个正整数n,表示待查找数组的元素个数;第三行读入n个递增整数,构成待查找的数组。
输出
整数x在数组中出现的索引位置(索引从0开始计数);如果不存在,返回(-1)-当前数应该出现的位置。
样例输入
3
5
0 1 3 5 6
样例输出
2
遍历最短路径长度
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
暴风降临的龙母丹妮莉丝·坦格利安要骑着她的龙以最快的速度游历各国,她的谋士们纷纷献策规划路线。作为她的谋士之一和仰慕者的你,决定冒险穿越到21世纪借助计算机来寻求最优路线。请设计一段程序,读取各国两两之间的距离,距离以邻接矩阵表示,并计算出遍历各国的最短路径长度。
输入
第一行:国家数量,假设为n
后续n行是国家间距离的邻接矩阵表示
输出
遍历各国的最短路径长度
样例输入
4
0,1,2,3
1,0,4,5
2,4,0,2
3,5,2,0
样例输出
5
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
假如一个数组中存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数)。只允许一次买入和一次卖出,请提供一个算法,计算出通过卖出和买入可以得到的最大利润
输入
价格序列,用,号隔开
输出
最大的可能利润
样例输入
2,3,2,4
样例输出
2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String line = in.nextLine();
String[] arry = line.split(",");
int result = 0;
int length = arry.length;
for (int i = 0; i < length; i++) {
int a = Integer.valueOf(arry[i]);
for (int j = i + 1; j < length; j++) {
int b = Integer.valueOf(arry[j]);
if (b > a) {
int c = b - a;
if (c > result) {
result = c;
}
}
}
}
System.out.println(result);
}
}
}
二分查找
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
请写一个二分查找算法查找一个数最先出现的index,如果数不在集合中需要返回(-1)-当前数应该出现的位置。例如 [1,3,6],查找5,5应该是在index=2的位置但并不在集合中。返回(-1)-2 = -3。
输入
第一行读入一个整数x,表示要查找的数;第二行读入一个正整数n,表示待查找数组的元素个数;第三行读入n个递增整数,构成待查找的数组。
输出
整数x在数组中出现的索引位置(索引从0开始计数);如果不存在,返回(-1)-当前数应该出现的位置。
样例输入
3
5
0 1 3 5 6
样例输出
2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int num = in.nextInt();
int qty = in.nextInt();
int nums[] = new int[qty];
for (int i = 0; i < qty; i++) {
nums[i] = in.nextInt();
}
System.out.println(binarySearch(nums, num));
}
}
public static int binarySearch(int[] array, int desc) {
int low = 0;
int high = array.length - 1;
int middle = 0;
while (low <= high) {
middle = (low + high) / 2;
if (desc == array[middle]) {
return middle;
} else if (desc < array[middle]) {
high = middle - 1;
} else {
low = middle + 1;
}
}
int result = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] < desc) {
result++;
}
}
return -1 - result;
}
}
遍历最短路径长度
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
暴风降临的龙母丹妮莉丝·坦格利安要骑着她的龙以最快的速度游历各国,她的谋士们纷纷献策规划路线。作为她的谋士之一和仰慕者的你,决定冒险穿越到21世纪借助计算机来寻求最优路线。请设计一段程序,读取各国两两之间的距离,距离以邻接矩阵表示,并计算出遍历各国的最短路径长度。
输入
第一行:国家数量,假设为n
后续n行是国家间距离的邻接矩阵表示
输出
遍历各国的最短路径长度
样例输入
4
0,1,2,3
1,0,4,5
2,4,0,2
3,5,2,0
样例输出
5
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
int num = Integer.valueOf(in.nextLine());
int[][] nums = new int[num][num];
for (int i = 0; i < num; i++) {
String line = in.nextLine();
String[] strs = line.split(",");
for (int j = 0; j < num; j++) {
nums[i][j] = Integer.valueOf(strs[j]);
}
}
int result = 0;
for (int i = 1; i < num; i++) {
int a = nums[i][0];
for (int j = 0; j < i; j++) {
if (nums[i][j] < a) {
a = nums[i][j];
}
}
result += a;
}
System.out.println(result);
}
}
}
在线编译全部百分之百通过。不过不一定就准确。请指教。