题目描述1
读入n个正整数,求出这n个数的最小值、最大值以及它们两的最大公约数,并输出。输入中第一行为n,接下来为n个大于零的整数。
输入
3
4 8 6
输出
4 8 4
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int mini=Integer.MAX_VALUE,maxi=0;
for(int i=0;i<n;i++){
int num=in.nextInt();
mini=num<mini?num:mini;
maxi=num>maxi?num:maxi;
}
System.out.print(mini+" "+maxi+" ");
while(mini!=0){
int p=maxi%mini;
maxi=mini;
mini=p;
}
System.out.print(maxi);
}
}
题目描述2
输入描述:
输入包含多组测试数据。
每组第一行输入一个整数n(n<100000),表示有n个任务。
接下来n行,每行第一个表示前序任务,括号中的任务为若干个后序任务,表示只有在前序任务完成的情况下,后序任务才能开始。若后序为NULL则表示无后继任务。
输出描述:
输出调度方式,输出如果有多种适合的调度方式,请输出字典序最小的一种。
输入
4
Task0(Task1,Task2)
Task1(Task3)
Task2(NULL)
Task3(NULL)
输出
Task0 Task1 Task2 Task3
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int n = sc.nextInt();
int[] root = new int[n];
for(int i = 0;i < n;i++) {
root[i] = -1;
}
for(int i = 0;i < n;i++) {
String s = sc.next();
int p = Integer.parseInt(String.valueOf(s.charAt(4)));
String sub = s.substring(6,s.length() - 1);
if(sub.equals("NULL")) {
continue;
}
String[] arr = sub.split(",");
for(int j = 0;j < arr.length;j++) {
int index = Integer.parseInt(String.valueOf(arr[j].charAt(4)));
root[index] = p;
}
}
Queue<Integer> queue = new PriorityQueue<Integer>();
for(int i = 0;i < n;i++) {
if(root[i] == -1) {
queue.add(i);
}
}
String s = "";
while(!queue.isEmpty()) {
int a = queue.poll();
s = s + "Task" + a + " ";
for(int i = 0;i < n;i++) {
if(a == root[i]) {
queue.add(i);
}
}
}
System.out.println(s.trim());
}
sc.close();
}
}
题目描述3
火车经过X站,火车最大载客人数为m,有n个订票请求,请求订购从a站到b站的k张票,若能满足订购要求则输出1,否则输出0。
输入描述
输入包含多组测试数据。
每组第一行输入两个数,分别为n,m。接下来有n行,每行三个数分别为a,b,k。
输出描述
输出相应的结果表示能否满足订购要求。
输入
5 10
4 10 9
8 12 2
8 12 1
14 20 8
30 300 15
输出
1
0
1
1
0
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
int m=in.nextInt();
List<Integer> list_b=new ArrayList<Integer>();
List<Integer> list_k=new ArrayList<Integer>();
for(int i=0;i<n;i++){
int a=in.nextInt();
int b=in.nextInt();
int k=in.nextInt();
while(list_b.size()!=0&&a>list_b.get(0)){
m=m+list_k.get(0);
list_b.remove(0);
list_k.remove(0);
}
if(k<=m){
m=m-k;
list_b.add(b);
list_k.add(k);
System.out.println("1");
}else{
System.out.println("0");
}
}
}
}
}