其他题解收录都在这了👇👇👇
目录
1041、考试座位号(分数 15)
题目描述:
代码实现:
import java.util.*;
class Node{
String id;
int kaoshi;
public Node(String id, int kaoshi){
this.id = id;
this.kaoshi = kaoshi;
}
}
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int N = in.nextInt();
Node[] students = new Node[N + 1];
while(N -- != 0){
String id = in.next();
int jishi = Integer.parseInt(in.next());
int kaoshi = Integer.parseInt(in.next());
students[jishi] = new Node(id, kaoshi);
}
int M = Integer.parseInt(in.next());
while(M -- != 0){
int q = Integer.parseInt(in.next());
System.out.println(students[q].id + " " + students[q].kaoshi);
}
}
}
运行结果:
1042、字符统计(分数 20)
题目描述:
代码实现:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int[] dict = new int[27];
for(char c : s.toCharArray()){
if(c >= 'a' && c <= 'z'){
dict[(c - 'a')] ++;
}
else if(c >= 'A' && c <= 'Z'){
dict[(c - 'A')] ++;
}
}
int maxx = 0;
for(int i = 1;i < 26;i ++){
if(dict[i] > dict[maxx])
maxx = i;
}
System.out.println((char)('a' + maxx) + " " + dict[maxx]);
}
}
运行结果:
1043、输出PATest(分数 20)
题目描述:
代码实现:
import java.util.*;
public class Main{
public static void printchar(int i){
switch(i){
case 0:
System.out.print("P");
break;
case 1:
System.out.print("A");
break;
case 2:
System.out.print("T");
break;
case 3:
System.out.print("e");
break;
case 4:
System.out.print("s");
break;
case 5:
System.out.print("t");
break;
}
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s = in.nextLine();
in.close();
int[] info = new int[6];
for(int i = 0;i < s.length();i ++){
if(s.charAt(i) == 'P')
info[0] ++;
else if(s.charAt(i) == 'A')
info[1] ++;
else if(s.charAt(i) == 'T')
info[2] ++;
else if(s.charAt(i) == 'e')
info[3] ++;
else if(s.charAt(i) == 's')
info[4] ++;
else if(s.charAt(i) == 't')
info[5] ++;
}
int mx = info[0];
for(int i = 1;i < 6;i ++){
mx = Math.max(mx, info[i]);
}
for(int i = 0;i < mx;i ++){
for(int j = 0;j < 6;j ++){
if(info[j] != 0){
printchar(j);
info[j] --;
}
}
}
System.out.println();
}
}
运行结果:
1044、火星数字(分数 20)
题目描述:
代码实现:
import java.util.*;
public class Main{
public static String[] dict = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
public static String[] high = {"", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
public static int findDict(String f){
for(int i = 0;i < 13;i ++)
if(f.equals(dict[i]))
return i;
return -1;
}
public static int findHigh(String f){
for(int i = 1;i < 13;i ++)
if(f.equals(high[i]))
return i;
return -1;
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int N = Integer.parseInt(in.nextLine());
while(N -- != 0){
String s = in.nextLine();
if(s.matches("[0-9]+")){
int num = Integer.parseInt(s);
if(num == 0)
System.out.println("tret");
else if (num >= 1 && num <= 12)
System.out.println(dict[num]);
else {
int h = num / 13;
if (num % 13 == 0)
System.out.println(high[h]);
else
System.out.println(high[h] + " " + dict[num % 13]);
}
}
else{
String[] info = s.split(" ");
int ans = 0;
if(findHigh(info[0]) != -1){
ans += 13 * findHigh(info[0]);
if(info.length == 2)
ans += findDict(info[1]);
}
else
ans += findDict(info[0]);
System.out.println(ans);
}
}
}
}
运行结果:
1045、快速排序(分数 25)
题目描述:
代码实现:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
/**
* 主元的两个特点:1.位置排序前后无变化 2.max{左边序列} < pivot && pivot < min{右边序列}
* 这里只需要比较排序前后的俩数组各元素位置变化 且 慢足2.中条件的左边序列要求即可
* 这题用Java内存会爆掉,果断换C++
*/
int N;
int main(){
cin >> N;
vector<int> v1(N), v2(N), MainVec;
for(int i = 0;i < N;i ++){
cin >> v1[i];
v2[i] = v1[i];
}
sort(v2.begin(), v2.end());
int maxx = -1;
for(int i = 0;i < N;i ++){
if(v1[i] == v2[i] && v1[i] > maxx)
MainVec.push_back(v1[i]);
maxx = max(maxx, v1[i]);
}
cout << MainVec.size() << endl;
for(int i = 0;i < MainVec.size();i ++){
if(i == MainVec.size() - 1)
cout << MainVec[i];
else
cout << MainVec[i] << " ";
}
cout << endl;
return 0;
}
运行结果: