華為機試 (11/8)
輸出最小的k個數
輸入n個整數,輸出其中最小的k個。
本題有多組輸入樣例,請使用while(cin>>)等方式處理
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while ((str = br.readLine()) != null) {
if (str.equals("")) continue;
String[] params = str.split(" ");
int n = Integer.parseInt(params[0]), k = Integer.parseInt(params[1]);
int[] res = new int[n];
int start = 0, index = 0;
if (params.length > 2) start = 2;
else params = br.readLine().split(" ");
for (int i = start; i < params.length; i++) {
res[index++] = Integer.parseInt(params[i]);
}
Arrays.sort(res);
StringBuilder ans = new StringBuilder();
for (int i = 0; i < k; i++) ans.append(res[i]).append(" ");
System.out.println(ans.toString().trim());
}
}
}
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int num, n;
while(cin>>num>>n){
int a[num];
for(int i=0;i<num;i++){
cin>>a[i];
}
sort(a,a+num);
for(int i=0;i<n-1;i++){
cout<<a[i]<<' ';
}
cout<<a[n-1]<<endl;
}
return 0;
}
成績排序
查詢和排序
題目:輸入任意(使用者,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績
都按先錄入排列在前的規則處理。
例示:
jack 70
peter 96
Tom 70
smith 67
從高到低 成績
peter 96
jack 70
Tom 70
smith 67
從低到高
smith 67
jack 70
Tom 70
peter 96
注:0代表從高到低,1代表從低到高
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* 查詢和排序
題目:輸入任意(使用者,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績
都按先錄入排列在前的規則處理。
例示:
jack 70
peter 96
Tom 70
smith 67
從高到低 成績
peter 96
jack 70
Tom 70
smith 67
從低到高
smith 67
jack 70
Tom 70
peter 96
注:0代表從高到低,1代表從低到高
*/
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String str="";
while((str=br.readLine())!=null){
int n=Integer.parseInt(str.trim());
int bool=Integer.parseInt(br.readLine().trim());
String[] name =new String[n];
int[] score=new int[n];
for(int i=0;i<n;i++){
str=br.readLine().trim();
String[] temp= str.split(" ");
name[i]=temp[0];
score[i]=Integer.parseInt(temp[1]);
}
if(bool==0){ // 由高到低
for(int i=0;i<n;i++){
for(int j=0;j<n-1-i;j++){
if(score[j+1]>score[j]){
String na=name[j];
name[j]=name[j+1];
name[j+1]=na;
int t=score[j];
score[j]=score[j+1];
score[j+1]=t;
}
}
}
}else{ // 由低到高
for(int i=0;i<n;i++){
for(int j=0;j<n-1-i;j++){
if(score[j+1]<score[j]){
String na=name[j];
name[j]=name[j+1];
name[j+1]=na;
int t=score[j];
score[j]=score[j+1];
score[j+1]=t;
}
}
}
}
StringBuilder sb = new StringBuilder();
for(int i=0;i<n;i++) {
sb.append(name[i] + " ");
sb.append(score[i]);
// if(i!=(n-1)) {
// sb.append("\n");
// }
sb.append("\n");
}
sb.deleteCharAt(sb.length()-1);
System.out.println(sb.toString());
}
}
}
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
class user {
public:
string name;
int score;
};
bool cpmpare0(user a, user b) {
return a.score > b.score ;
}
bool cpmpare1(user a, user b) {
return a.score < b.score;
}
int main() {
int count,flag;
while (cin>>count>>flag) {
vector<user> biao;
for (int i = 0; i < count; i++) {
user temp;
cin >> temp.name >> temp.score ;
biao.push_back(temp);
}
if(flag)
stable_sort(biao.begin(), biao.end(), cpmpare1);
else
stable_sort(biao.begin(), biao.end(), cpmpare0);
for (int i = 0; i < count; i++) {
cout << biao[i].name << " " << biao[i].score << endl;
}
}
}
火車進站
給定一個正整數N代表火車數量,0<N<10,接下來輸入火車入站的序列,一共N輛火車,每輛火車以數字1-9編號,火車站只有一個方向進出,同時停靠在火車站的列車中,只有後進站的出站了,先進站的才能出站。要求以字典序排序輸出火車出站的序列號。
(1)這時候可以是1 到站後 馬上就出站;然後2 進站,然後2出站;最後3進站,然後3出站;這時候出站順序是 1 2 3;
(2)也可以是1 進站,2進站,這時候,必須2先出站,接著1出站。最後是3進站,然後3出站;這時候出站順序是2 1 3;
(3)當然也可以是1 進站,2進站,3進站;然後必須是 3 先出站,2 次出站,1最後出站
解釋一下為什麼3 1 2不可以;
要是3先出站,必須是 1 進站 2進站 3進站;這時候3出站,但是這時候2在1的前面,必須是2先出站最後是1出站,因此3 1 2這個答案不行;
import java.util.*;
public class Main{
static Stack<String> stack = new Stack<String>();
static Stack<String> list = new Stack<String>();
static List<String> result = new ArrayList<>();
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
in.nextLine();
String line = in.nextLine();
process(line);
}
}
public static void process(String s){
String[] strs = s.split("\\s");
for(int i=strs.length-1; i>=0; i--){
list.push(strs[i]);
}
method("");
Collections.sort(result);
for(String r : result){
System.out.println(r);
}
}
public static void method(String s){
if(stack.empty()&&list.empty()){
result.add(s.trim());
return ;
}
if(!stack.empty()){
String str = stack.pop();
method(s+" "+str);
stack.push(str);
}
if(!list.empty()){
String str = list.pop();
stack.push(str);
method(s);
stack.pop();
list.push(str);
}
}
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX_N 10
char result[12000][12];
int result_cnt;
int stack1[MAX_N];
int index1;
int stack2[MAX_N];
int index2;
int stack3[MAX_N];
int index3;
int size;
void dfs(){
if(index3==size){
int i;
for(i=0;i<size;i++)
result[result_cnt][i]=stack3[i]+'0';
result[result_cnt][i]='\0';
result_cnt++;
return;
}
if(index2!=-1){//站內有車
stack3[index3]=stack2[index2];
index3++;
index2--;
dfs();
stack2[++index2]=stack3[--index3];
}
if(index1<size){
stack2[++index2]=stack1[index1];
index1++;
dfs();
index2--;
index1--;
}
}
int comp(const void *a,const void *b){
return strcmp((char*)a,(char*)b);
}
int main(){
while(scanf("%d",&size)!=EOF){
int i,j;
for(i=0;i<size;i++){
scanf("%d",&stack1[i]);
}
index1=0;
index2=-1;
index3=0;
result_cnt=0;
dfs();
qsort(result,result_cnt,sizeof(result[0]),comp);
for(i=0;i<result_cnt;i++){
for(j=0;j<size;j++){
printf("%c ",result[i][j]);
}
printf("\n");
}
}
return 0;
}
相關文章
- 【華為機試線上訓練】Day 11
- 【華為機試線上訓練】Day 8
- 牛客網--華為機試題
- 華為機試-取近似值
- 華為機試題刷題總結
- 【華為機試線上訓練】Day 10
- 【華為機試線上訓練】Day 6
- 【華為機試線上訓練】Day 7
- 【華為機試線上訓練】Day 9
- 【華為機試線上訓練】Day1
- 【華為機試線上訓練】Day2
- 【華為機試線上訓練】Day3
- 【華為機試線上訓練】Day4
- Counterpoint:2020年8月華為手機份額降至16%
- 華為暢享8評測:華為暢享8怎麼樣值得買嗎?
- 華為暢享8e評測 華為暢享8e值得買嗎?
- 華為暢享新機華為暢享8上架:搭載驍龍430 售價1299元!
- 華為暢享8 Plus與暢享8對比 華為暢享8和Plus有什麼區別?
- 【華為OD】機試真題 - 分割均衡字串-2024年D卷字串
- 華為秋招筆試題筆試
- 華為nova 4拍照怎麼樣?華為Nova4手機攝像頭拍照測試
- 華為nova8和榮耀30哪個好-華為nova8和榮耀30區別
- 華為手機相關的股票有哪些 華為手機股票一覽
- 清華機試oj——手機按鍵
- 華為雲 linux centos8 安裝tendisLinuxCentOS
- 華為遊戲試玩不生效遊戲
- 華為2019春招筆試題筆試
- 華為部分線上測試題
- 榮耀暢玩8C與華為暢享8區別對比 榮耀暢玩8C和華為暢享8哪個好?
- 華為P20 Pro與小米8區別對比 小米8和華為P20 Pro哪個好?
- 華為交換機VLAN配置
- 華為交換機配置Telnet
- 華為交換機配置(一)
- 前端面試8:渲染機制前端面試
- 四款華為麒麟710智慧手機推薦 華為麒麟710手機有哪些?
- 6款最具價效比華為手機推薦 華為手機哪款好?
- 華為Nova3真機曝光:首發麒麟710 劍指小米8SE
- 華為Nova4電池耐用嗎?華為Nova4手機電池續航能力和充電測試