王道論壇計(jì)算機(jī)考研機(jī)試指南 三 Hash的應(yīng)用

例2.5 統(tǒng)計(jì)同成績學(xué)生人數(shù) (九度教程第10題)
時(shí)間限制:1秒 **內(nèi)存限制:32兆 ** 特殊判題:否

題目描述:
讀入N名學(xué)生的成績额衙,將獲得某一給定分?jǐn)?shù)的學(xué)生人數(shù)輸出霎褐。

輸入:
測試輸入包含若干測試用例陋葡,每個(gè)測試用例的格式為
第1行:N
第2行:N名學(xué)生的成績右莱,相鄰兩數(shù)字用一個(gè)空格間隔桃笙。
第3行:給定分?jǐn)?shù)
當(dāng)讀到N=0時(shí)輸入結(jié)束氏堤。其中N不超過1000,成績分?jǐn)?shù)為(包含)0到100之間的一個(gè)整數(shù)。

輸出:
對每個(gè)測試用例鼠锈,將獲得給定分?jǐn)?shù)的學(xué)生人數(shù)輸出闪檬。

樣例輸入:
3
80 60 90
60
2
85 66
0
5
60 75 90 55 75
75
0

樣例輸出:
1
0
2

來源:
2006年浙江大學(xué)計(jì)算機(jī)及軟件工程研究生機(jī)試真題

#include <stdio.h>
int main () {
    int n;
    while (scanf ("%d",&n) != EOF && n != 0) { 
        int Hash[101] = {0}; //輸入判斷增加對n是否等于零進(jìn)行 判斷 
        for (int i = 1;i <= n;i ++) {//建立一個(gè)初始為0的Hash數(shù)組用來記錄各種分?jǐn)?shù)出現(xiàn)的次 數(shù)
            int x;
            scanf ("%d",&x);
            Hash[x] ++; //統(tǒng)計(jì)分?jǐn)?shù)出現(xiàn)次數(shù) 
        }
        int x;
        scanf ("%d",&x);     
        printf("%d\n",Hash[x]); //得到需要查詢的目標(biāo)分?jǐn)?shù)后,只需簡單的查詢我們統(tǒng) 計(jì)的數(shù)量即可
    }
    return 0;
}
例2.6 Sort (九度教程第11題)
時(shí)間限制:1秒 **內(nèi)存限制:32兆 ** 特殊判題:否

題目描述:
給你n個(gè)整數(shù),請按從大到小的順序輸出其中前m大的數(shù)购笆。

輸入:
每組測試數(shù)據(jù)有兩行粗悯,第一行有兩個(gè)數(shù)n,m(0<n,m<1000000),第二行包含n個(gè)各不相同同欠,且都處于區(qū)間[-500000,500000]的整數(shù)样傍。

輸出:
對每組測試數(shù)據(jù)按從大到小的順序輸出前m大的數(shù)。

樣例輸入:
5 3
3 -35 92 213 -644

樣例輸出:
213 92 3

#include <stdio.h>
#define OFFSET 500000 //偏移量,用于補(bǔ)償實(shí)際數(shù)字與數(shù)組下標(biāo)之間偏移
int Hash[1000001]; //偏移量,用于補(bǔ)償實(shí)際數(shù)字與數(shù)組下標(biāo)之間偏移
int main () {
    int n , m;
    while (scanf ("%d%d",&n,&m) != EOF) {
        for (int i = -500000;i <= 500000;i ++) {
            Hash[i + OFFSET] = 0;
            }//初始化,將每個(gè)數(shù)字都標(biāo)記為未出現(xiàn)
        for (int i = 1;i <= n;i ++) {
            int x;
            scanf ("%d",&x);
            Hash[x + OFFSET] = 1; //凡是出現(xiàn)過的數(shù)字,該數(shù)組元素均被設(shè)置成1
        }
        for (int i = 500000;i >= -500000;i --) {  //輸出前m個(gè)數(shù) 
            if (Hash[i + OFFSET] == 1) { //若該數(shù)字在輸入中出現(xiàn) 
                printf("%d",i); //輸出該數(shù)字
                m --; //輸出一個(gè)數(shù)字后,m減一,直至m變?yōu)? 
                if (m != 0) printf(" "); //注意格式,若m個(gè)數(shù)未被輸出完畢,在輸出的 
數(shù)字后緊跟一個(gè)空格
                else {
                    printf("\n"); //若m個(gè)數(shù)字已經(jīng)被輸出完畢,則在輸出的數(shù)字后面緊跟 
一個(gè)換行,并跳出遍歷循環(huán)
                    break;
                }
            }   
        }
    }
    return 0;
}
題目1156 誰是你的潛在朋友 (九度教程第12題)
時(shí)間限制:1秒 **內(nèi)存限制:32兆 ** 特殊判題:否

題目描述:
“臭味相投”——這是我們描述朋友時(shí)喜歡用的詞匯铺遂。兩個(gè)人是朋友通常意味著他們存在著許多共同的興趣衫哥。然而作為一個(gè)宅男,你發(fā)現(xiàn)自己與他人相互了解的機(jī)會并不太多襟锐。幸運(yùn)的是撤逢,你意外得到了一份北大圖書館的圖書借閱記錄,于是你挑燈熬夜地編程粮坞,想從中發(fā)現(xiàn)潛在的朋友蚊荣。 首先你對借閱記錄進(jìn)行了一番整理,把N個(gè)讀者依次編號為1,2,…,N莫杈,把M本書依次編號為1,2,…,M妇押。同時(shí),按照“臭味相投”的原則姓迅,和你喜歡讀同一本書的人,就是你的潛在朋友俊马。你現(xiàn)在的任務(wù)是從這份借閱記錄中計(jì)算出每個(gè)人有幾個(gè)潛在朋友丁存。

輸入:
每個(gè)案例第一行兩個(gè)整數(shù)N,M,2 <= N 柴我,M<= 200解寝。接下來有N行,第i(i = 1,2,…,N)行每一行有一個(gè)數(shù)艘儒,表示讀者i-1最喜歡的圖書的編號P(1<=P<=M)

輸出:
每個(gè)案例包括N行聋伦,每行一個(gè)數(shù),第i行的數(shù)表示讀者i有幾個(gè)潛在朋友界睁。如果i和任何人都沒有共同喜歡的書觉增,則輸出“BeiJu”(即悲劇,^ ^)

樣例輸入:
4 5
2
3
2
1

樣例輸出:
1
BeiJu
1
BeiJu

來源:
2011年北京大學(xué)計(jì)算機(jī)研究生機(jī)試真題

#include <stdio.h>
int main () {
    int n,m;
    while (scanf ("%d %d",&n,&m) != EOF) { 
        int a[n+1];
        int Hash[200] = {0}; //輸入判斷增加對n是否等于零進(jìn)行 判斷 
        for (int i = 1;i <= n;i ++) {//建立一個(gè)初始為0的Hash數(shù)組用來記錄各種分?jǐn)?shù)出現(xiàn)的次 數(shù)
            int x;
            scanf ("%d",&x);
            a[i]=x;
            Hash[x] ++; //統(tǒng)計(jì)分?jǐn)?shù)出現(xiàn)次數(shù) 
        }
        
        for (int i = 1;i <= n;i ++) {     
            if( Hash[a[i]]==1||Hash[a[i]]==0 ) printf("BeiJu\n");               //得到需要查詢的目標(biāo)分?jǐn)?shù)后,只需簡單的查詢我們統(tǒng) 計(jì)的數(shù)量即可
            else printf("%d\n",Hash[a[i]]-1);
        }
    }
    return 0;
}

//總是error 
//Hash【x】錯誤
//沒按要求讀取 

題目1088:剩下的樹
時(shí)間限制:1 秒
內(nèi)存限制:32 兆
特殊判題:
提交:7444
解決:3379

題目描述:
有一個(gè)長度為整數(shù)L(1<=L<=10000)的馬路翻斟,可以想象成數(shù)軸上長度為L的一個(gè)線段逾礁,起點(diǎn)是坐標(biāo)原點(diǎn),在每個(gè)整數(shù)坐標(biāo)點(diǎn)有一棵樹访惜,即在0,1,2嘹履,...腻扇,L共L+1個(gè)位置上有L+1棵樹。 現(xiàn)在要移走一些樹砾嫉,移走的樹的區(qū)間用一對數(shù)字表示幼苛,如 100 200表示移走從100到200之間(包括端點(diǎn))所有的樹。 可能有M(1<=M<=100)個(gè)區(qū)間焕刮,區(qū)間之間可能有重疊〔把兀現(xiàn)在要求移走所有區(qū)間的樹之后剩下的樹的個(gè)數(shù)。

輸入:
兩個(gè)整數(shù)L(1<=L<=10000)和M(1<=M<=100)济锄。 接下來有M組整數(shù)暑椰,每組有一對數(shù)字。

輸出:
可能有多組輸入數(shù)據(jù)荐绝,對于每組輸入數(shù)據(jù)一汽,輸出一個(gè)數(shù),表示移走所有區(qū)間的樹之后剩下的樹的個(gè)數(shù)低滩。

樣例輸入:
500 3
100 200
150 300
470 471

樣例輸出:
298

來源:
2011年清華大學(xué)計(jì)算機(jī)研究生機(jī)試真題

#include<cstdio>
 
#include<iostream>
 
#include<cstring>
using namespace std;

int Hash[10000]; 
int main () {
    int L , M;
    while (scanf ("%d%d",&L,&M) != EOF) {
        int x, y, count = 0;
        for (int i = 0;i <= L;i ++) {
            Hash[i] = 1;
        }
            
        for (int i = 0;i < M;i ++) {
            scanf ("%d%d",&x,&y);
            for( int j=x; j<=y ; j++)
            Hash[j] --;
        }
        
        for (int i = 0;i <= L;i ++) {  
            if (Hash[i] == 1) count++;
        }
        printf("%d\n",count);   
    }
    return 0;
}

// count 沒有在while()里面初始化導(dǎo)致錯誤 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末召夹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恕沫,更是在濱河造成了極大的恐慌监憎,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婶溯,死亡現(xiàn)場離奇詭異鲸阔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迄委,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門褐筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叙身,你說我怎么就攤上這事渔扎。” “怎么了信轿?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵晃痴,是天一觀的道長。 經(jīng)常有香客問我财忽,道長倘核,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任定罢,我火速辦了婚禮笤虫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己琼蚯,他們只是感情好酬凳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遭庶,像睡著了一般宁仔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上峦睡,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天翎苫,我揣著相機(jī)與錄音,去河邊找鬼榨了。 笑死煎谍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的龙屉。 我是一名探鬼主播呐粘,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼转捕!你這毒婦竟也來了作岖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤五芝,失蹤者是張志新(化名)和其女友劉穎痘儡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枢步,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沉删,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了醉途。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丑念。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖结蟋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渔彰,我是刑警寧澤嵌屎,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站恍涂,受9級特大地震影響宝惰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜再沧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一尼夺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦淤堵、人聲如沸寝衫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慰毅。三九已至,卻和暖如春扎阶,著一層夾襖步出監(jiān)牢的瞬間汹胃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工东臀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留着饥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓惰赋,卻偏偏與公主長得像宰掉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子谤逼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容