華為OJ訓練題之 比賽情況統計,華為oj

來源:互聯網
上載者:User

華為OJ訓練題之 比賽情況統計,華為oj

題目如下:

比賽情況統計

有一個遊戲平台,各個參賽隊伍(以唯一的TeamID來標識)之間進行單迴圈的對抗賽,兩個隊伍之間只舉行一場比賽,比賽以得分的多少定勝負。需要完成一個統計賽況的程式,能夠隨時查詢指定隊伍的最新賽況:包括勝、平、負的局數,當前總積分以及名次。 

說明:迴圈賽沒有全部結束時也可以查詢某個隊伍的最新賽況

 

規則說明

比賽判定:兩個隊伍中得分高的一方為勝者,另一方為負者;得分相同則為平局 

積分規則:每一局比賽: 勝者積3分;平局雙方各積1分; 負者積0分 

排名規則:按照當前總積分的高低,名次從1開始依次進行排名。積分相同的名次並列,出現n(n>=2)個隊伍名次並列時,則並列名次的以下n-1個名次空出

輸入滿足如下規格或約束,考生程式無需檢查: 

(1)比賽隊伍總數<=1000<>

(2)0 <= teamid<= 65535<>

(3)每個隊伍的總積分<=65535<>

(4)隊伍1對隊伍2的比賽, 隊伍2對隊伍1的比賽指同一場比賽 

(5)不會重複輸入同一場比賽的比賽結果 

(6)自己和自己不比賽 

 

迴圈賽的前兩場比賽結果如下:

 

隊伍1ID

隊伍1得分

隊伍2ID

隊伍2得分

比賽1

1

34

2

45

比賽2

2

40

3

40

輸入:

隊伍相互比賽資訊,格式是隊伍id和得分,如1 2 34 45 ,就是ID為1和2的兩個隊伍的比賽得分是34與45.一個隊賽況結果內的資料用空格隔開;

輸出:

以名次去排列的得分情況,依次是

隊伍ID

勝的場數

平局場數

負的場數

總積分

名次

2

1

1

0

4

1

     那麼就是 211041

測試範例:

輸入:1 2 34 45 2 3 4040 1 3 35 45

輸出:1 0 0 2 0 3 2 1 10 4 1 3 1 1 0 4 1


我的程式——

package Tran0624;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.Scanner;import java.util.Set;import java.util.TreeSet;public class Main {private static HashMap<Integer,Troop> list;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String string = scanner.nextLine();String[] ssStrings = string.split(" "); //四個是一場比賽//每一組資料,隊伍id , 得分int n = ssStrings.length;int[] dataArray = new int[n];list = new HashMap<Integer,Troop>();boolean existFlag = false;for (int i = 0; i <n; i++) {dataArray[i] =  Integer.parseInt(ssStrings[i]);}for (int i = 0; i < n; i++) {if ((i%4 == 0)||(i%4 == 1)) {list.put(dataArray[i],new Troop(dataArray[i] ));}else if(i%4 == 2){if (dataArray[i]> dataArray[i+1]) { list.get(dataArray[i-2]).setWinNum( list.get(dataArray[i-2]).getWinNum()+1); list.get(dataArray[i-2]).setScores(list.get(dataArray[i-2]).scores+3);  list.get(dataArray[i-1]).setFailNum(list.get(dataArray[i-1]).getFailNum()+1); }else if(dataArray[i]== dataArray[i+1]) { list.get(dataArray[i-2]).setEqualNum(list.get(dataArray[i-2]).getEqualNum()+1); list.get(dataArray[i-2]).setScores(list.get(dataArray[i-2]).scores+1);  list.get(dataArray[i-1]).setEqualNum(list.get(dataArray[i-1]).getEqualNum()+1); list.get(dataArray[i-1]).setScores(list.get(dataArray[i-1]).scores+1);}else if(dataArray[i]< dataArray[i+1]) { list.get(dataArray[i-1]).setWinNum( list.get(dataArray[i-1]).getWinNum()+1); list.get(dataArray[i-1]).setScores(list.get(dataArray[i-1]).scores+3);  list.get(dataArray[i-2]).setFailNum(list.get(dataArray[i-2]).getFailNum()+1);}}}Set<Integer> set = list.keySet();Iterator<Integer> iterator = set.iterator();ArrayList<Troop> mapArrayList  =  new ArrayList<Main.Troop>();while(iterator.hasNext()){mapArrayList.add(list.get(iterator.next()));}Collections.sort(mapArrayList);for (int j = 0; j < mapArrayList.size(); j++) {System.out.println(mapArrayList.get(j).toString());}}public static class Troop implements Comparable<Troop>{private int id = 0;private int winNum = 0;//勝利場數private int equalNum = 0;//平局private int failNum = 0;//負場數private int scores = 0; //積分public Troop(int id){this.id = id;}@Overridepublic int compareTo(Troop o) {return o.id;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getWinNum() {return winNum;}public void setWinNum(int winNum) {this.winNum = winNum;}public int getEqualNum() {return equalNum;}public void setEqualNum(int equalNum) {this.equalNum = equalNum;}public int getFailNum() {return failNum;}public void setFailNum(int failNum) {this.failNum = failNum;}public int getScores() {return scores;}public void setScores(int scores) {this.scores = scores;}@Overridepublic String toString() {return ""+id+winNum+equalNum+failNum+scores ;//"Troop [id=" + id + ", winNum=" + winNum + ", equalNum="//+ equalNum + ", failNum=" + failNum + ", scores=" + scores//+ ", rank=" + rank + "]";}}}






一個C++ oj題目 單詞統計

核心碼:
int flag=0, count =0;
for(int i=0;i<n;i++)
{
if(isalpha(a[i])&&flag==0)

{
flag=1;

count++;

if(a[i]==','||a[i]==' '||a[i]='.')
flag=0;
}

C++中有兩個getline函數,這兩個函數分別定義在不同的標頭檔中。

1.getline()是定義在<string>中的一個行數,用於輸入一行string,以enter結束。

函數原型:getline(cin,str);
cin:istream類的輸入資料流對象
str:待輸入的string對象

example 1:

[cpp] view plaincopy

//《C++ primary plus》第四章編程練習題1
#include <iostream>
#include <string>
using namespace std;
string fname;
string lname;
char grade;
int age;
int main()
{
cout<<"What is your first name?";
getline(cin,fname);
cout<<"What is your last name?";
getline(cin,lname);
cout<<"What letter grade do you deserve?";
cin>>grade;
cout<<"What is your age?";
cin>>age;
cout<<"Name:"<<lname<<","<<fname<<endl<<"Grade:" <<grade<<endl<<"Age:"<<age<<endl;
system("pause");
return(0);
}

2.cin.getline(char ch[],size)是cin 的一個成員函數,定義在<iostream>中,用於輸入行指定size的字串,以enter結束。若輸入長度超出size,則不再接受後續的輸入。

example 2:

[cpp] view plaincopy

//《C++ primary plus》第四章編程練習題1
#include <iostream>
using namespace std;
char fname[5];
char lname[5];
char grade;
int age;
int main()
{
cout<<"What is your......餘下全文>>
 
應用可以力訓練 以下題型是統計學基礎的題 忘給與解答

1.解
計劃完成程度(%) 公司個數 計劃任務數 組中值(%) 實際完成數
90~100 3 80 95 76
100~110 12 400 105 420
110~120 5 120 115 138
合計 20 600 - 634

平均完成程度=實際完成數/計劃任務數*100%=634/600*100%=105.67%
《陽光小有潮衣店》友情提供 歡迎您的光臨!

蔬菜名稱 價格(元/千克)x 成交額(元)m 成交量(千克)m/x
馬鈴薯 1.2 1200 1000
油菜 1.6 3200 2000
蘑菇 2.2 2200 1000
合計 ― 6600 4000

蔬菜的平均價格=∑m/∑m/x=6600/4000=1.65(元)
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.