版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
招聘公務(wù)員的優(yōu)化模型
摘要
本文針對(duì)公務(wù)員招聘中錄取問(wèn)題展開分析,根據(jù)錄取的不同條件,對(duì)錄用方案不斷的優(yōu)化,最終為應(yīng)聘領(lǐng)導(dǎo)小組選出最符合條件的應(yīng)聘人員。
問(wèn)題一:由于應(yīng)聘領(lǐng)導(dǎo)小組不考慮應(yīng)聘人員的意愿,按照擇優(yōu)按需錄取方案來(lái)錄用應(yīng)聘人員,此時(shí)我們會(huì)想到影響領(lǐng)導(dǎo)小組分配的有兩個(gè)方面:
1)擇優(yōu)--------綜合考慮所有應(yīng)聘者的筆試和面試成績(jī)來(lái)選優(yōu),根據(jù)公務(wù)錄用辦法,應(yīng)聘人員的筆試成績(jī)和面試成績(jī)各占應(yīng)聘人員綜合成績(jī)的百分之五十。為了更好地表示出各個(gè)應(yīng)聘人員之間的差距,我們將應(yīng)聘者成績(jī)用分?jǐn)?shù)顯示出來(lái),因?yàn)榘俜种聘菀妆淮蠹医邮?,所以將綜合成績(jī)轉(zhuǎn)化為百分制,并且筆試和面試成績(jī)各占百分之五十,所以將二者成績(jī)用五十分制來(lái)表示。將二者成績(jī)相加,可以求出每名應(yīng)聘者的綜合成績(jī)。
2)按需---------根據(jù)用人部門的需求來(lái)選擇合適的應(yīng)聘者。即根據(jù)每名應(yīng)聘者的面試成績(jī)和每個(gè)部門工作要求的比較,因?yàn)閼?yīng)聘者四種能力的面試成績(jī)最高可以高出部門能力等級(jí)的三個(gè)等級(jí),最低也只會(huì)低三個(gè)等級(jí),所以我們可以把應(yīng)聘者的四種面試能力分成七種滿意程度,即{很不滿意、不滿意、不太滿意、基本滿意、比較滿意、滿意、很滿意}。為了將結(jié)果更清晰的表示出,我們將七種滿意度量化。因?yàn)槿藗儗?duì)不滿意程度的敏感遠(yuǎn)遠(yuǎn)大于對(duì)滿意程度的敏感,即用人部門對(duì)應(yīng)聘者的滿意程度降低一級(jí)可能導(dǎo)致用人部門極大的抱怨,但對(duì)滿意程度增加一級(jí)只能引起滿意程度的少量增長(zhǎng)。為此,可以取近似的偏大型柯西分布隸屬函數(shù),可以明顯地表現(xiàn)出他們彼此之間的差距。當(dāng)我們考慮好這兩方面后我們還應(yīng)該綜合考慮筆試成績(jī),面試成績(jī)和用人部門的評(píng)價(jià)確定錄用名單并按需分配給各用人部門。最后用0-1模型求出符合條件的應(yīng)聘者并把他們分配到合適部門和單位對(duì)他們各自的滿意度。
問(wèn)題二:在考慮應(yīng)聘人員意愿和用人部門的希望要求時(shí)我們還應(yīng)從兩個(gè)方面考慮。
1)每一個(gè)部門對(duì)每一個(gè)應(yīng)聘者都有一個(gè)實(shí)際的“滿意度”。即問(wèn)題一中求出的各部門對(duì)面一名應(yīng)聘者的綜合成績(jī)。
2)每一個(gè)應(yīng)聘者對(duì)每一個(gè)部門也都有一個(gè)“滿意度”。應(yīng)聘者對(duì)部門的滿意度包括應(yīng)聘者所報(bào)志愿是否被錄取的滿意度和應(yīng)聘人員對(duì)福利待遇的滿意度,最后應(yīng)聘者對(duì)部門的滿意度是兩個(gè)滿意度的綜合計(jì)算。最后選取使雙方“滿意度”最大的錄用分配方案。
問(wèn)題三:本文針對(duì)一般情況(即N個(gè)應(yīng)聘人員M個(gè)用人單位時(shí)),也就是對(duì)問(wèn)題一,二的推廣。考慮到應(yīng)聘者人數(shù)和部門數(shù)都是未知數(shù),并且基于應(yīng)聘人員數(shù)目大于部門數(shù)之一假設(shè),可以分為兩種情況,當(dāng)應(yīng)聘者數(shù)目過(guò)大時(shí),可以憑借一些標(biāo)準(zhǔn),在筆試過(guò)后先篩選掉一部分人。在使用解決上述問(wèn)題中的模型來(lái)解決該問(wèn)題。當(dāng)應(yīng)聘者數(shù)目較少時(shí),可以直接使用上述模型解決。
問(wèn)題四:本文最后還對(duì)模型的優(yōu)點(diǎn)與不足之處做出了評(píng)價(jià)。
關(guān)鍵詞:擇優(yōu)按需模糊函數(shù)0-1模型
問(wèn)題重述
我國(guó)公務(wù)員制度已實(shí)施多年,1993年10月1日頒布施行的《國(guó)家公務(wù)員暫行條例》規(guī)定:“國(guó)家行政機(jī)關(guān)錄用擔(dān)任主任科員以下的非領(lǐng)導(dǎo)職務(wù)的國(guó)家公務(wù)員,采用公開考試、嚴(yán)格考核的辦法,按照德才兼?zhèn)涞臉?biāo)準(zhǔn)擇優(yōu)錄用”。目前,我國(guó)招聘公務(wù)員的程序一般分三步進(jìn)行:公開考試(筆試)、面試考核、擇優(yōu)錄取。
現(xiàn)有某市直屬單位因工作需要,擬向社會(huì)公開招聘8名公務(wù)員,具體的招聘辦法和程序如下:
(一)公開考試:凡是年齡不超過(guò)30周歲,大學(xué)??埔陨蠈W(xué)歷,身體健康者均可報(bào)名參加考試,考試科目有:綜合基礎(chǔ)知識(shí)、專業(yè)知識(shí)和“行政職業(yè)能力測(cè)驗(yàn)”三個(gè)部分,每科滿分為100分。根據(jù)考試總分的高低排序按1:2的比例(共16人)選擇進(jìn)入第二階段的面試考核。
(二)面試考核:面試考核主要考核應(yīng)聘人員的知識(shí)面、對(duì)問(wèn)題的理解能力、應(yīng)變能力、表達(dá)能力等綜合素質(zhì)。按照一定的標(biāo)準(zhǔn),面試專家組對(duì)每個(gè)應(yīng)聘人員的各個(gè)方面都給出一個(gè)等級(jí)評(píng)分,從高到低分成A/B/C/D四個(gè)等級(jí),具體結(jié)果見(jiàn)表1所示。
(三)由招聘領(lǐng)導(dǎo)小組綜合專家組的意見(jiàn)、筆初試成績(jī)以及各用人部門需求確定錄用名單,并分配到各用人部門。
該單位擬將錄用的8名公務(wù)員安排到所屬的7個(gè)部門,并且要求每個(gè)部門至少安排一名公務(wù)員。這7個(gè)部門按工作性質(zhì)可分為四類:(1)行政管理、(2)技術(shù)管理、(3)行政執(zhí)法、(4)公共事業(yè)。見(jiàn)表2所示。
招聘領(lǐng)導(dǎo)小組在確定錄用名單的過(guò)程中,本著公平、公開的原則,同時(shí)考慮錄用人員的合理分配和使用,有利于發(fā)揮個(gè)人的特長(zhǎng)和能力。招聘領(lǐng)導(dǎo)小組將7個(gè)用人單位的基本情況(包括福利待遇、工作條件、勞動(dòng)強(qiáng)度、晉升機(jī)會(huì)和學(xué)習(xí)深造機(jī)會(huì)等)和四類工作對(duì)聘用公務(wù)員的具體條件的希望達(dá)到的要求都向所有應(yīng)聘人員公布(見(jiàn)表2)。每一位參加面試人員都可以申報(bào)兩個(gè)自己的工作類別志愿(見(jiàn)表1)。請(qǐng)研究下列問(wèn)題:
(1)如果不考慮應(yīng)聘人員的意愿,擇優(yōu)按需錄用,試幫助招聘領(lǐng)導(dǎo)小組設(shè)計(jì)一種錄用分配方案;
(2)在考慮應(yīng)聘人員意愿和用人部門的希望要求的情況下,請(qǐng)你幫助招聘領(lǐng)導(dǎo)小組設(shè)計(jì)一種分配方案;
(3)你的方法對(duì)于一般情況,即N個(gè)應(yīng)聘人員M個(gè)用人單位時(shí),是否可行?
(4)
你對(duì)上述招聘公務(wù)員過(guò)程認(rèn)為還有哪些地方值得改進(jìn),給出你的建議。
表1:招聘公務(wù)員筆試成績(jī),專家面試評(píng)分及個(gè)人志愿
應(yīng)聘
人員
筆試
成績(jī)
申報(bào)類別志愿
專家組對(duì)應(yīng)聘者特長(zhǎng)的等級(jí)評(píng)分
知識(shí)面
理解能力
應(yīng)變能力
表達(dá)能力
人員1
290
(2)
(3)
A
A
B
B
人員2
288
(3)
(1)
A
B
A
C
人員3
288
(1)
(2)
B
A
D
C
人員4
285
(4)
(3)
A
B
B
B
人員5
283
(3)
(2)
B
A
B
C
人員6
283
(3)
(4)
B
D
A
B
人員7
280
(4)
(1)
A
B
C
B
人員8
280
(2)
(4)
B
A
A
C
人員9
280
(1)
(3)
B
B
A
B
人員10
280
(3)
(1)
D
B
A
C
人員11
278
(4)
(1)
D
C
B
A
人員12
277
(3)
(4)
A
B
C
A
人員13
275
(2)
(1)
B
C
D
A
人員14
275
(1)
(3)
D
B
A
B
人員15
274
(1)
(4)
A
B
C
B
人員16
273
(4)
(1)
B
A
B
C
表2:用人部門的基本情況及對(duì)公務(wù)員的期望要求
用人
部門
工作
類別
各用人部門的基本情況
各部門對(duì)公務(wù)員特長(zhǎng)的希望達(dá)到的要求
福利待遇
工作條件
勞動(dòng)強(qiáng)度
晉升機(jī)會(huì)
深造機(jī)會(huì)
知識(shí)面
理解能力
應(yīng)變能力
表達(dá)能力
部門1
(1)
優(yōu)
優(yōu)
中
多
少
B
A
C
A
部門2
(2)
中
優(yōu)
大
多
少
A
B
B
C
部門3
(2)
中
優(yōu)
中大
少中
多中
部門4
(3)
優(yōu)
差
大
多中
多
C
C
A
A
部門5
(3)
優(yōu)
中差
中大
中
中
部門6
(4)
中
中
中
中
多
C
B
B
A
部門7
(4)
優(yōu)
中
大中
少
多
問(wèn)題分析
問(wèn)題一:由于應(yīng)聘領(lǐng)導(dǎo)小組不考慮應(yīng)聘人員的意愿,按照擇優(yōu)按需錄取方案來(lái)錄用應(yīng)聘人員,此時(shí)我們會(huì)想到影響領(lǐng)導(dǎo)小組分配的有兩個(gè)方面:
1)擇優(yōu)--------綜合考慮所有應(yīng)聘者的筆試和面試成績(jī)來(lái)選優(yōu),根據(jù)公務(wù)員錄用辦法,應(yīng)聘人員的筆試成績(jī)和面試成績(jī)各占應(yīng)聘人員綜合成績(jī)的百分之五十。為了更好地表示出各個(gè)應(yīng)聘人員之間的差距,我們將應(yīng)聘者成績(jī)用分?jǐn)?shù)顯示出來(lái),因?yàn)榘俜种聘菀妆淮蠹医邮?,所以將綜合成績(jī)轉(zhuǎn)化為百分制,并且筆試和面試成績(jī)各占百分之五十,所以將二者成績(jī)用五十分制來(lái)表示??梢郧蟪雒棵麘?yīng)聘者的筆試成績(jī)。。
2)按需---------根據(jù)用人部門的需求來(lái)選擇合適的應(yīng)聘者。即根據(jù)每名應(yīng)聘者的面試成績(jī)和每個(gè)部門工作要求的比較,因?yàn)閼?yīng)聘者四種能力的面試成績(jī)最高可以高出部門能力等級(jí)的三個(gè)等級(jí),最低也只會(huì)低三個(gè)等級(jí),所以我們可以把應(yīng)聘者的四種面試能力分成七種滿意程度,即{很不滿意、不滿意、不太滿意、基本滿意、比較滿意、滿意、很滿意}。為了將將結(jié)果更清晰的表示出,我們將七種滿意度量化。因?yàn)槿藗儗?duì)不滿意程度的敏感遠(yuǎn)遠(yuǎn)大于對(duì)滿意程度的敏感,即用人部門對(duì)應(yīng)聘者的滿意程度降低一級(jí)可能導(dǎo)致用人部門極大的抱怨,但對(duì)滿意程度增加一級(jí)只能引起滿意程度的少量增長(zhǎng)。為此,可以取近似的偏大型柯西分布隸屬函數(shù),可以明顯地表現(xiàn)出他們彼此之間的差距。當(dāng)我們考慮好這兩方面后我們還應(yīng)該綜合考慮筆試成績(jī),面試成績(jī)和用人部門的評(píng)價(jià)確定錄用名單并按需分配給各用人部門。
問(wèn)題二:在考慮應(yīng)聘人員意愿和用人部門的希望要求時(shí)我們還應(yīng)從兩個(gè)方面考慮。
1)每一個(gè)部門對(duì)每一個(gè)應(yīng)聘者都有一個(gè)實(shí)際的“滿意度”。即問(wèn)題一中求出的各部門對(duì)面一名應(yīng)聘者的綜合成績(jī)。
2)每一個(gè)應(yīng)聘者對(duì)每一個(gè)部門也都有一個(gè)“滿意度”。應(yīng)聘者對(duì)部門的滿意度包括應(yīng)聘者所報(bào)志愿是否被錄取的滿意度和應(yīng)聘人員對(duì)福利待遇的滿意度,最后應(yīng)聘者對(duì)部門的滿意度是兩個(gè)滿意度的綜合計(jì)算。
最后選取使雙方“滿意度”最大的錄用分配方案。
問(wèn)題三:本文針對(duì)一般情況(即N個(gè)應(yīng)聘人員M個(gè)用人單位時(shí)),也就是對(duì)問(wèn)題一,二的推廣??紤]到應(yīng)聘者人數(shù)和部門數(shù)都是未知數(shù),并且基于應(yīng)聘人員數(shù)目大于部門數(shù)之一假設(shè),可以分為兩種情況,當(dāng)應(yīng)聘者數(shù)目過(guò)大時(shí),可以憑借一些標(biāo)準(zhǔn),在筆試過(guò)后先篩選掉一部分人。在使用解決上述問(wèn)題中的模型來(lái)解決該問(wèn)題。當(dāng)應(yīng)聘者數(shù)目較少時(shí),可以直接使用上述模型解決。
模型假設(shè)
筆試和面試的成績(jī)可準(zhǔn)確地反映各個(gè)應(yīng)聘人員的真實(shí)能力;
每個(gè)人員只能被一個(gè)單位錄取,一個(gè)單位至少錄取一個(gè)人;
假設(shè)在總成績(jī)中,筆試成績(jī)占50%,面試成績(jī)占50%;
各個(gè)工作享有對(duì)應(yīng)聘人員相同的支配度,不存在某個(gè)工作優(yōu)先錄取的情況;
在招聘公務(wù)員時(shí)除了題中所涉及的因素外,不考慮性別等一系列其他因素。
定義與符號(hào)說(shuō)明
(其他符號(hào)在問(wèn)題中有具體說(shuō)明)
模型的建立與求解
問(wèn)題一:如果不考慮應(yīng)聘人員的意愿,擇優(yōu)按需錄用,試幫助招聘領(lǐng)導(dǎo)小組設(shè)計(jì)一種錄用分配方案。
一:由于該問(wèn)不考慮應(yīng)聘人員的意愿,擇優(yōu)按需錄取,我們先算出16名應(yīng)聘人員的綜合成績(jī),及采用百分制的方法將應(yīng)聘人員的筆試成績(jī)與面試成績(jī)按一定的百分比算出。(由江蘇省公務(wù)員錄取辦法可知,公務(wù)員錄取筆試成績(jī)與面試成績(jī)占的比例為50%)
1)筆試綜合成績(jī)的計(jì)算方法為
(1)
2)面試綜合成績(jī)的計(jì)算方法為
首先,對(duì)專家組所給出的每一個(gè)應(yīng)聘者4項(xiàng)條件的評(píng)分進(jìn)行量化處理,從而給出每個(gè)應(yīng)聘者的面試得分。注意到,專家組對(duì)應(yīng)聘者的4項(xiàng)條件評(píng)分為A,B,C,D四個(gè)等級(jí),不妨設(shè)相應(yīng)的評(píng)語(yǔ)集為{很好,好,一般,差},對(duì)應(yīng)的數(shù)值為5,4,3,2。根據(jù)實(shí)際情況取偏大型柯西分布隸屬函數(shù)
(2)
其中A,B,a,b,為待定常數(shù),規(guī)定,用Matlab求解得A=1.1086、0.9066,B=0.8942、1.0957,a=0.3915,b=0.3699(程序見(jiàn)附錄一);由偏大型柯西分布隸屬函數(shù)定義可知,B<x,因?yàn)閤最小為1,所以取A=1.1086,B=0.8942。則。所以專家對(duì)面試評(píng)分等級(jí){A,B,C,D}轉(zhuǎn)化為{100,91.26,80,52.45}。
面試綜合成績(jī)的計(jì)算公式為
(3)
3)綜合總成績(jī)的計(jì)算方法為
(4)
根據(jù)以上公式,通過(guò)EXCEL表格求得以下數(shù)據(jù)(表一)
筆試成績(jī)
筆試綜合成績(jī)
知識(shí)面
理解能力
應(yīng)變能力
表達(dá)能力
面試綜合成績(jī)
綜合總成績(jī)
290
48.33333
100
100
91.26
80
46.4075
94.74083
288
48
100
91.26
100
52.45
42.96375
90.96375
288
48
91.26
100
52.45
80
40.46375
88.46375
285
47.5
100
91.26
91.26
91.26
46.7225
94.2225
283
47.16667
91.26
100
91.26
80
45.315
92.48167
283
47.16667
91.26
52.45
100
91.26
41.87125
89.03792
280
46.66667
100
91.26
80
91.26
45.315
91.98167
280
46.66667
91.26
100
100
80
46.4075
93.07417
280
46.66667
91.26
91.26
100
91.26
46.7225
93.38917
280
46.66667
52.45
91.26
100
80
40.46375
87.13042
278
46.33333
52.45
80
91.26
100
40.46375
86.79708
277
46.16667
100
91.26
80
100
46.4075
92.57417
275
45.83333
91.26
80
52.45
100
40.46375
86.29708
275
45.83333
52.45
91.26
100
91.26
41.87125
87.70458
274
45.66667
100
91.26
80
91.26
45.315
90.98167
273
45.5
91.26
100
91.26
80
45.315
90.815
(表一)
二:招聘領(lǐng)導(dǎo)小組向各部門推薦的人員
通常認(rèn)為,各部門對(duì)人員的滿意程度集為{很不滿意、不滿意、不太滿意、基本滿意、比較滿意、滿意、很滿意},即構(gòu)成了評(píng)語(yǔ)集并相應(yīng)賦值為1,2,3,4,5,6,7。
當(dāng)應(yīng)聘者的某項(xiàng)指標(biāo)等級(jí)與用人部門相應(yīng)的要求一致時(shí),則認(rèn)為用人部門為基本滿意,即滿意程度為;當(dāng)應(yīng)聘者的某項(xiàng)指標(biāo)等級(jí)比用人部門相應(yīng)的要求高一級(jí)時(shí),則用人部門的滿意度上升一級(jí),即滿意程度為;當(dāng)應(yīng)聘者的某項(xiàng)指標(biāo)等級(jí)與用人部門相應(yīng)的要求低一級(jí)時(shí),則用人部門的滿意度下降一級(jí),即滿意程度為;依次類推,則可以得到用人部門對(duì)應(yīng)聘者的滿意度。例如:專家組對(duì)應(yīng)聘者1的評(píng)價(jià)指標(biāo)集為{A,A,B,B},部門1的要求指標(biāo)集為{B,A,C,A},則部門1對(duì)應(yīng)聘者1的滿意程度為。
為了得到“滿意度”的量化指標(biāo),首先注意到,人們對(duì)不滿意程度的敏感遠(yuǎn)遠(yuǎn)大于對(duì)滿意程度的敏感,即用人部門對(duì)應(yīng)聘者的滿意程度降低一級(jí)可能導(dǎo)致用人部門極大的抱怨,但對(duì)滿意程度增加一級(jí)只能引起滿意程度的少量增長(zhǎng)。為此,可以取近似的偏大型柯西分布隸屬函數(shù)
(5)
其中A,B,a,b為待定常數(shù)。實(shí)際上,當(dāng)“很滿意”時(shí),則滿意度的量化值為1,即;當(dāng)“基本滿意”時(shí),則滿意度的量化值為0.8,即;當(dāng)“很不滿意”時(shí),則滿意度的量化值為0.01,即。于是,用Matlab求解得A=2.4944,B=0.8413,a=0.3574,b=0.3045(程序見(jiàn)附錄二),故可以得到相應(yīng)的隸屬函數(shù):
經(jīng)計(jì)算得。轉(zhuǎn)化成百分制為則各項(xiàng)指標(biāo)的評(píng)語(yǔ)集的量化值為{}。轉(zhuǎn)化為百分制為{}應(yīng)聘者四項(xiàng)特長(zhǎng)評(píng)分和7個(gè)部門的期望要求,則可以分別計(jì)算得到每一個(gè)部門對(duì)每一個(gè)應(yīng)聘者的各單項(xiàng)指標(biāo)的滿意度的量化值。
例如:專家組對(duì)應(yīng)聘者1的評(píng)價(jià)指標(biāo)集為{},部門1的要求指標(biāo)集為{},則部門1對(duì)應(yīng)聘者1的滿意程度為{},其量化值為{0.9399,0.8,0.9399,0.6514}。轉(zhuǎn)化為百分制為{}
分別計(jì)算得到每一個(gè)部門對(duì)每一個(gè)應(yīng)聘者的各單項(xiàng)指標(biāo)的滿意度的量化值。分別記為
()
由應(yīng)聘者的4項(xiàng)特長(zhǎng)指標(biāo)在綜合評(píng)價(jià)中的地位是等同的假設(shè),可取第i個(gè)部門對(duì)第j個(gè)應(yīng)聘者的綜合評(píng)分為
(6)
模型的優(yōu)化:對(duì)題目中應(yīng)聘人員的綜合分?jǐn)?shù)和部門的需求條件的量化后,’’擇優(yōu)按需錄用’’轉(zhuǎn)化為保兩者之和最大的優(yōu)化問(wèn)題。(0—1規(guī)劃)
用表示決策者變量,即當(dāng)錄用第i個(gè)應(yīng)聘者,并將其分配給第j個(gè)部門時(shí);其它情況于是問(wèn)題就轉(zhuǎn)化為下面的優(yōu)化模型:
(7)
用LINGO求解(程序見(jiàn)附錄三)可以得到錄用分配方案如表(二)
表(二)問(wèn)題(1)的錄用分配方案
部門序號(hào)
1
2
3
4
5
6
7
應(yīng)聘者序號(hào)
12
5,8
2
9
4
7
1
綜合分?jǐn)?shù)
92.574,
92.483,93.074
90.964
93.389
94.223
91.982
94.741
部門評(píng)分
78.290
78.290,80.285
81.995
80.285
78.210
76.215
81.915
2.問(wèn)題二:在考慮應(yīng)聘人員意愿和用人部門的希望要求的情況下,請(qǐng)你幫助招聘領(lǐng)導(dǎo)小組設(shè)計(jì)一種分配方案
1):應(yīng)聘人員申報(bào)志愿對(duì)各部門滿意度
我們把應(yīng)聘人員的第一志愿對(duì)各部門要求的一致定義為“非常滿意”,把應(yīng)聘人的第二志愿對(duì)各部門要求的基本一致定義為“基本滿意”,不符合志愿的定義為“不滿意”。即非常滿意、基本滿意、不滿意量化為3、2、1。相應(yīng)的我們給非常滿意定義為100,不滿意定義為5,則由偏大型柯西隸屬函數(shù),并把代入上述函數(shù),并有MATLAB求解得(程序見(jiàn)附錄四)。故可以得到相應(yīng)的隸屬函數(shù):
經(jīng)計(jì)算。則各項(xiàng)指標(biāo)的評(píng)語(yǔ)集:非常滿意、基本滿意、不滿意量化到最后的結(jié)果相對(duì)應(yīng)為100、67、5。這樣每一個(gè)應(yīng)聘者對(duì)每一個(gè)用人部門都有一個(gè)反映主觀偏好的滿意度。考慮應(yīng)聘人員申報(bào)志愿在對(duì)用人部門評(píng)價(jià)中的影響作用,就是在客觀評(píng)價(jià)的基礎(chǔ)上對(duì)第一志愿、第二志愿和沒(méi)有志愿分別作加權(quán)處理可得下表(表三):
部門一
部門二
部門三
部門四
部門五
部門六
部門七
人員1
5
100
100
67
67
5
5
人員2
67
5
5
100
100
5
5
人員3
100
67
67
5
5
5
5
人員4
5
5
5
67
67
100
100
人員5
5
67
67
100
100
5
5
人員6
5
5
5
100
100
67
67
人員7
67
5
5
5
5
100
100
人員8
5
100
100
5
5
67
67
人員9
100
5
5
67
67
5
5
人員10
67
5
5
100
100
5
5
人員11
67
5
5
5
5
100
100
人員12
5
5
5
100
100
67
67
人員13
67
100
100
5
5
5
5
人員14
100
5
5
67
67
5
5
人員15
100
5
5
5
5
67
67
人員16
67
5
5
5
5
100
100
(表三)
2):應(yīng)聘人員對(duì)福利待遇的滿意度
對(duì)于反映用人部門基本情況的五項(xiàng)指標(biāo)都可分為“優(yōu)中差,或小中大、多中少”三個(gè)等級(jí),應(yīng)聘者對(duì)各部門的評(píng)語(yǔ)集也可分為三個(gè)等級(jí),即{滿意,基本滿意,不滿意},類似于上面確定用人部門對(duì)應(yīng)聘者的滿意度的方法。應(yīng)聘者對(duì)7個(gè)部門的五項(xiàng)指標(biāo)中的“優(yōu)、多”級(jí)別認(rèn)為很滿意,其隸屬度為100:“中”級(jí)別認(rèn)為滿意,其隸屬度為60;“差、大、少”級(jí)別認(rèn)為不滿意,其隸屬度為5。
部門基本情況的五項(xiàng)內(nèi)容評(píng)價(jià)
指標(biāo)
評(píng)價(jià)
福利待遇
優(yōu)
中
差
工作條件
優(yōu)
中
差
勞動(dòng)強(qiáng)度
大
中
小
晉升機(jī)會(huì)
多
中
少
深造機(jī)會(huì)
多
中
少
(表四)
則得到用人部門基本情況評(píng)價(jià)的量化如Excel表(表五):
指標(biāo)
待遇福利
工作條件
勞動(dòng)強(qiáng)度
晉升機(jī)會(huì)
深造機(jī)會(huì)
綜合評(píng)價(jià)值
部門1
100
100
60
100
5
73
部門2
60
100
5
100
5
54
部門3
60
100
60
5
100
65
部門4
100
5
5
100
100
62
部門5
100
60
60
60
60
68
部門6
60
60
60
60
100
68
部門7
100
60
5
5
100
54
(表五)
考慮應(yīng)聘人員申報(bào)志愿在對(duì)用人部門評(píng)價(jià)中的影響作用,就是在客觀評(píng)價(jià)的基礎(chǔ)上對(duì)第一志愿、第二志愿和沒(méi)有志愿分別作加權(quán)處理。于是,每一個(gè)應(yīng)聘者對(duì)每一個(gè)部門的五個(gè)單項(xiàng)指標(biāo)的滿意度應(yīng)為該部門的客觀水平評(píng)價(jià)值與應(yīng)聘者對(duì)該部門的滿意度的乘積的二次開方(因?yàn)槲覀兪怯玫陌俜种?,為了更好的?quán)值一樣)。
我們把,即:
(8)
我們知道,而且雙向選擇要考慮到雙方的相互綜合滿意度。所以相互綜合滿意度應(yīng)有各自的滿意度來(lái)確定。在此,
取雙方各自滿意度的幾何平均值為雙方相互綜合滿意度。(例如:假如有兩組成員第一組對(duì)公司的滿意度是2,公司對(duì)第一組的滿意度也為2而第二組對(duì)公司的滿意度為1,公司對(duì)第二組的滿意度為3.很明顯雙方的滿意度不是線性變化的如果簡(jiǎn)單的相乘就無(wú)法反應(yīng)雙方的真正滿意度。由此我們想到對(duì)雙方滿意度乘積的二次開方)即
(9)
則:目標(biāo)函數(shù)
由此建立數(shù)學(xué)模型
(10)
用LINGO求解(程序見(jiàn)附錄五)可以得到錄用分配方案如表(表六)
表(六)問(wèn)題(2)的錄用分配方
部門序號(hào)
1
2
3
4
5
6
7
應(yīng)聘者序號(hào)
9,15
8
1
2
6
4
7
綜合滿意度
80.696,79.828
76.809
82.289
76.522
78.425
81.181
74.837
3.問(wèn)題三:你的方法對(duì)于一般情況,即N個(gè)應(yīng)聘人員M個(gè)用人單位時(shí),是否可行?
1)對(duì)問(wèn)題(1)而言,當(dāng)各用人部門的應(yīng)聘人員都很多時(shí),取所有應(yīng)聘人員綜合分?jǐn)?shù)與用人部門綜合評(píng)分的均值,即由(4)式和(6)式得
(11)
對(duì)于或(i=1、2….N)的應(yīng)聘人員淘汰掉。然后將剩下的應(yīng)聘者重新編號(hào),再用上述的方法求解,確定錄用分配方案。如果剩下的人數(shù)仍然很多,則可以做類似的進(jìn)一步擇優(yōu)。
2)當(dāng)個(gè)別用人部門的應(yīng)聘人員很少時(shí),可以將這些人先挑選出來(lái),通過(guò)問(wèn)題一的方法將他們的綜合成績(jī)算出,再進(jìn)行篩選。綜合1)和2)兩個(gè)步驟進(jìn)行篩選。
針對(duì)問(wèn)題(1)篩選后的應(yīng)聘人員再運(yùn)用問(wèn)題一和問(wèn)題二的處理方法選出最符合要求的應(yīng)聘人員。
4.問(wèn)題四:你對(duì)上述招聘公務(wù)員過(guò)程處理認(rèn)為還有哪些地方值得改進(jìn),給出你的建議。
我們認(rèn)為現(xiàn)行的公務(wù)員招聘過(guò)程中有以下不足:第一,僅通過(guò)筆試和面試成績(jī)進(jìn)行錄取存在一定不足,可以增加試用期考核,即增加了準(zhǔn)則層的考量標(biāo)準(zhǔn),使模型的靈敏度和準(zhǔn)確度更高;第二,面試的評(píng)分等級(jí)僅有A、B、C、D四等,無(wú)法很好地反映出應(yīng)聘人員之間的差距,應(yīng)適當(dāng)增加評(píng)分等級(jí),使模型更加精確;第三,用人單位應(yīng)根據(jù)工作的性質(zhì)和以往的經(jīng)驗(yàn),確定準(zhǔn)則層各因素之間(筆試成績(jī)、面試成績(jī)等)的相對(duì)重要性,使模型更加符合實(shí)際情況。
七.模型分析與評(píng)價(jià)
本模型成功地解決了公務(wù)員的招聘問(wèn)題。我們通過(guò)把招聘中的各個(gè)過(guò)程用偏大型柯西隸屬函數(shù)表示出來(lái),減少了錄取過(guò)程中由于人的因素造成的主觀偏差,使錄取的過(guò)程更加公正、公平。將各項(xiàng)準(zhǔn)則模糊化,使模型模型靈敏性和準(zhǔn)確性更高,更符合生活實(shí)際應(yīng)用。我們通過(guò)合理的假設(shè),并進(jìn)行適當(dāng)?shù)暮?jiǎn)化,使模型可以方便的應(yīng)用于N個(gè)人到M個(gè)用人單位的招聘過(guò)程。但是,本模型也存在著一些不足,對(duì)于各準(zhǔn)則的權(quán)重沒(méi)有考慮到實(shí)際工作部門的差異。另外,有16個(gè)人,7個(gè)部門推廣到N個(gè)人,M個(gè)部門的過(guò)程不夠嚴(yán)密。此時(shí)就會(huì)出現(xiàn)冷門部門招不到人的現(xiàn)象,如果我們把冷門部門隔離起來(lái)進(jìn)行單獨(dú)分配,把熱部門按上述的方法進(jìn)行分配。就可以做到真正意思上的合理分配。
八.參考文獻(xiàn)
[1]姜啟源、數(shù)學(xué)模型(第三版),北京:高等教育出版社。
[2]王沫然,MATLAB6.0與科學(xué)計(jì)算,北京:電子工業(yè)出版社。
[3]岳超源,決策理論與方法,北京:科學(xué)出版社。
[4]解可新,韓立興林友,最優(yōu)化方法,天津:天津大學(xué)出版社,1997.
[5]葉其孝,大學(xué)生數(shù)學(xué)建模輔導(dǎo)材料,長(zhǎng)沙,湖南教育出版社,2002.
九.附錄
附錄一:
s=solve('(1+A*(1-B)^(-2))^(-1)=0.01','(1+A*(3-B)^(-2))^(-1)=0.8','A','B')
s=solve('a*ln(3)+b=0.8','a*ln(5)+b=1','a','b')
附錄二:
s=solve('a*ln(4)+b=0.8','a*ln(7)+b=1','a','b')
s=solve('(1+a*(1-b)^(-2))^(-1)=0.01','(1+a*(4-b)^(-2))^(-1)=0.8','a','b')
附錄三:
model:
sets:
ypz/1..16/:c;
bm/1..7/:;
links(ypz,bm):x,w;
endsets
data:
c=94.74190.96488.46494.22392.48289.03891.98293.07493.38987.13086.79892.57486.29787.70590.98290.815;
w=80.285 83.99 83.99 79.84 79.84 81.915 81.915
70.6625 81.995 81.995 74.3675 74.3675 74.3675 74.3675
65.0425 67.0375 67.0375 54.6175 54.6175 61.485 61.485
76.58 81.995 81.995 78.21 78.21 79.92 79.92
70.7425 78.29 78.29 70.6625 70.6625 72.7375 72.7375
60.17 69.0325 69.0325 74.585 74.585 69.0325 69.0325
74.585 78.29 78.29 70.6625 70.6625 76.215 76.215
72.3725 80.285 80.285 74.3675 74.3675 74.7325 74.7325
76.215 80.285 80.285 80.285 80.285 80.285 80.285
57.415 62.245 62.245 67.0375 67.0375 67.0375 67.0375
59.49 60.17 60.17 72.59 72.59 72.59 72.59
78.29 79.92 79.92 74.3675 74.3675 79.92 79.92
65.0425 64.9625 64.9625 62.245 62.245 67.0375 67.0375
64.9625 64.24 64.24 74.585 74.585 74.585 74.585
74.585 78.29 78.29 70.6625 70.6625 76.215 76.215
70.7425 78.29 78.29 70.6625 70.6625 72.7375 72.7375;
enddata
max=@sum(bm(j):@sum(ypz(i):c(i)*x(i,j))+@sum(ypz(i):w(i,j)*x(i,j)));
@sum(links(i,j):x(i,j))=8;
@for(bm(j):@sum(ypz(i):x(i,j))>=1);
@for(bm(j):@sum(ypz(i):x(i,j))<=2);
@for(ypz(i):@sum(bm(j):x(i,j))<=1);
@for(links(i,j):@bin(x(i,j)));
end
附錄四:
s=solve('a*ln(3)+b=100','a*ln(1)+b=5','a','b')
附錄五:
model:
sets:
ry/1..16/:;
bm/1..7/:;
links(ry,bm):q,t;
endsets
data:
q=39.164378.561982.289171.734373.410238.864436.6879
70.298236.705838.447276.522678.310337.030634.9569
74.546963.500366.512931.010331.734833.670931.7852
38.250036.705838.447270.998372.656981.181176.6348
36.763268.623171.878774.592076.334736.622634.5717
33.905033.679735.277576.634478.424768.261064.4383
72.222935.866937.568535.272436.096479.277074.8374
37.184376.809680.453636.185337.030671.023367.0458
80.695836.321038.044271.933973.614538.475736.3210
63.366831.981133.498372.653574.350935.158433.1894
64.501731.443532.935235.750236.585477.368873.0360
38.674636.238437.957676.522678.310373.446969.3338
67.444769.092372.370233.104933.878335.158433.1894
74.501032.489634.030969.333470.953137.084835.0080
79.828235.866937.568535.272436.096471.724367.7076
70.337935.866937.568535.272436.096477.447373.1101;
enddata
max=@sum(links(i,j):q(i,j)*t(i,j));
@sum(links(i,j):t(i,j))=8;
@for(ry(i):@sum(bm(j):t(i,j))<=1);
@for(bm(j):@sum(ry(i):t(i,j))>=1);
@for(bm(j):@sum(ry(i):t(i,j))<=2);
@for(links(i,j):@bin(t(i,j)));
end
附錄資料:不需要的可以自行刪除
Pascal/C/C++語(yǔ)句對(duì)比(補(bǔ)充版)
一、Helloworld
先看三種語(yǔ)言的樣例:
Pascal
begin
writeln(‘Helloworld’);
end.
C
#include<stdio.h>
intmain()
{
printf("Helloworld!\n");
return0;
}
C++
#include<iostream>
usingnamespacestd;
intmain()
{
cout<<"Helloworld!"<<endl;
return0;
}
從這三個(gè)程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C++里就是{};Pascal主程序沒(méi)有返回值,而C/C++返回0(好像在C中可以為NULL)。在C/C++中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C++除了iostream還有第二行的usingnamespacestd,這個(gè)是打開命名空間的,NOIP不會(huì)考這個(gè),可以不管,只要知道就行了。
此外說(shuō)明注釋單行用//,段落的話Pascal為{},C/C++為/**/。
**常用頭文件(模板)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<string>
usingnamespacestd;
intmain()
{
……
system(“pause”);
return0;
}
二、數(shù)據(jù)類型及定義
這里只列出常用的類型。
1、整型
Pascal
C/C++
范圍
shortint
-
-128…127
integer
short
-32768…32767
longint
Int
-2147483648…2147483647
int64
longlong
-9223372036854775808…9223372036854775807
byte
-
0…255
word
unsignedshort
0…65535
longword
unsignedint
0…4294967295
qword
unsignedlonglong
0…18446744073709551615
**當(dāng)對(duì)longlong變量賦值時(shí),后要加LL
Longlongx=6327844632743269843LL
**如果位移x<<2LL
**Linux:printf(“%lld\n”,x);
**Windows:printf(“%I64d\n”,x);
2、實(shí)型
Pascal
C/C++
范圍
real
float
2.9E-39…1.7E38
single
-
1.5E-45…3.4E38
double
double
5.0E-324…1.7E308
3、字符即字符串
字符在三種語(yǔ)言中都為char,C里沒(méi)有字符串,只有用字符數(shù)組來(lái)代替字符串,Pascal和C++均為string。Pascal中字符串長(zhǎng)度有限制,為255,C++則沒(méi)有。
字符串和字符在Pascal中均用單引號(hào)注明,在C/C++中字符用單引號(hào),字符串用雙引號(hào)。
4、布爾類型
Pascal中為boolean,C/C++為bool。值均為True或False。C/C++中除0外bool都為真。
5、定義
常量的定義均為const,只是在C/C++中必須要注明常量的類型。在C/C++中還可以用宏來(lái)定義常量,此時(shí)不注明類型。
Pascal
C/C++
const
a=60;
b=-a+30;
d=‘‘;
constinta=60;
constintb=-a+30;
conststringd=“”;
defineMAXN501//這個(gè)是宏
**宏定義其實(shí)就是直接在程序相應(yīng)的位置替換:
#definerandomizesrand(unsignedtime(NULL))
#definewaitfor(intw=0;w<100000;w++)
變量的定義,C/C++在定義的同時(shí)可以賦值:
Pascal
C/C++
var
a,b:integer;
c:char;
d:string;
inta,b=50;
charc=‘A’;
stringd;
boolflag;
三、輸入輸出
C/C++中沒(méi)有以回車作為結(jié)束的讀入方式(就本人所知)?!盶n”表示換行。常規(guī)輸入輸出:
Pascal
C
C++
read(a);//讀入變量a
readln(a);//讀入變a,回車結(jié)束
write(a);//輸出a
writeln(a);//輸出a并換行
scanf(“%d”,&a);
printf(“%d”,a);
printf(“%d\n”,a);
cin>>a;
cout<<a;
cout<<a<<endl;
特別說(shuō)明C++中cin一個(gè)字符的話會(huì)自動(dòng)跳過(guò)空格和回車,Pascal和C則會(huì)讀入空格和回車。在Pascal中writeln(a:n:m)表示在n個(gè)字符寬的輸出域上輸出a保留m位小數(shù)。
例如:pascalwrite(a:6)c/c++printf(“%6d”,a)
Pascalwrite(a:6:2)c/c++printf(“%6.2f”,a)
C++如果用cout?(繁瑣??!)
需要加頭文件#inlude<iomanip>
cout<<setprecision(2)<<a;//作用永久
cout<<setw(6)<<a;//作用臨時(shí)
以下三個(gè)進(jìn)制設(shè)定都是永久作用:
cout<<dec<<a;相當(dāng)printf(“%d”,a);//十進(jìn)制
cout<<hex<<a;相當(dāng)printf(“%X”,a);//十六進(jìn)制
cout<<oct<<a;相當(dāng)printf(“%o”,a);//八進(jìn)制
例如:cout<<12<<hex<<12<<oct<<12<<12<<endl;
輸出:12c1414
C的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:
%hd
1個(gè)short型整數(shù)
%d
1個(gè)int型整數(shù)
%u
1個(gè)unsignedint型整數(shù)
%I64d
1個(gè)longlong型整數(shù)
%c
1個(gè)字符
%s
1個(gè)C字符串
%f
1個(gè)float型實(shí)數(shù)
%lf
1個(gè)double型實(shí)數(shù)
%10.4f
輸出1個(gè)總寬度為10,保留4位小數(shù)的實(shí)數(shù)
文件輸入輸出:
Pascal
assign(input,‘test.in’);
assign(output,‘test.out’);
reset(input);
rewrite(output);
read(a,b);
writeln(a,b);
close(input);
close(output);
C
FILE*fin=fopen(“test.in”,“r”);
FILE*fout=fopen(“test.out”,“w”);
fscanf(fin,“%d%d”,&a,&b);
fprintf(fout,“%d%d”,a,b);
fclose(fin);
fclose(fout);
C++
#include<fstream>
usingnamespacestd;
ifstreamfin(“test.in”);
ofstreamfout(“test.out”);
fin>>a>>b;
fout<<a<<b<<endl;
fin.close();
fout.close();
因?yàn)镃++的讀入較慢,個(gè)人建議C++的話使用C的輸入方式。當(dāng)然也有人用C的讀入,C++的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。
**中國(guó)計(jì)算機(jī)學(xué)會(huì)競(jìng)賽須知發(fā)布的C讀寫程序:
(C++也能用,cin,cout,scanf,printf可混用)
#include<stdio.h>
intmain()
{
inta,b;
freopen(“sum.in”,”r”,stdin);
freopen(“sum.out”,”w”,stdout);
scanf(“%d%d”,&a,&b);
printf(“%d\n”,a+b);
return0;
}
或者:
freopen(“sum.in”,”r”,stdin);
freopen(“sum.out”,”w”,stdout);
ios::sync_with_stdio(false);\\取消同步,cin,cout的速度就不慢了?。?/p>
cin>>a>>b;
cout<<a+b<<endl;
return0;
以下擴(kuò)充c/c++混用是可行的:
#include<iostream>
#include<cstdio>
usingnamespacestd;
intmain()
{
inta,b,c,d;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d%d",&a,&b);
cin>>c>>d;
printf("%d\n",a+b);
cout<<a+b+c+d<<endl;
return0;
}
**如何判斷文件結(jié)束(EOF)?
C++
while(cin>>s>>n)
{
...
}
C
while(scanf(%s%d",s,&n)!=EOF)
{
...
}
四、賦值語(yǔ)句及運(yùn)算符號(hào)
一一對(duì)應(yīng)的關(guān)系
Pascal
C/C++
賦值運(yùn)算
賦值
:=
=
基本運(yùn)算
加
+
+
減
-
-
乘
*
*
除(實(shí)數(shù))
/
/(double)
除法
取整
div
(int)/(int)
取余
mod
%
比較
等于
=
==
不等于
<>
!=
大于
>
>
大于等于
>=
>=
小于
<
<
小于等于
<=
<=
邏輯
且
and
&&
或
or
||
非
not
!
位運(yùn)算
左移(*2)
shl
<<
右移(/2)
shr
>>
且
and
&
或
or
|
非
not
~
異或
xor
^
其他
增一
inc(x)
x++
減一
dec(x)
x--
在C/C++中對(duì)某個(gè)變量自身進(jìn)行運(yùn)算可以簡(jiǎn)寫為
變量名運(yùn)算符號(hào)=改變量
如x+=8就表示x=x+8,即inc(x,8)。
在C/C++里還存在一種三目運(yùn)算
變量名=條件?值A(chǔ):值B
如x=x>0?x:-x;//表示若x>0則取x,否則取–x,
同ifx>0thenx:=xelsex:=-x;
五、條件語(yǔ)句
1、if
C/C++中if語(yǔ)句的條件必須要用括號(hào)括起來(lái),后面不使用then。
Pascal
C/C++
ifa>bthenflag:=true
elseflag:=false;
if(a>b)flag=true;
elseflag=false;
2、多種分支
C/C++中為switch,Pascal為case:
Pascal
C/C++
casexof
1:inc(x);
2:dec(x);
elsex:=x*x;
end;
switch(x)
{
case1:x++;break;
case2:x--;break;
default:x*=x;
}
切記C/C++中一定要寫break,后果你可以去掉break,運(yùn)行看看就知道了。
六、循環(huán)語(yǔ)句
1、for
Pascal
C/C++
for變量名:=初始值to(downto)終止值do
for(變量名=初始值;條件;改變方式)
fori:=5to10dodec(a);
//終止值大于初始值用to
fori:=5downto1dodec(a);
//終止值小于于初始值用downto
for(i=5;i<=10;i++)a--;
for(i=5;i>=1;i--)a--;
/*只要i滿足條件就會(huì)一直循環(huán)。
C/C++中i是實(shí)數(shù)、指針都可以*/
C/C++中for的特殊用法:
//變量為實(shí)數(shù)
for(doublei=1;i<=2;i*=1.01)
k++;
//變量為指針,->符號(hào)為間接引用,后面會(huì)提到。
for(type1*p=head->next;p;p=p->next)
printf(“%d”,p->k);
2、while
Pascal
C/C++
while條件do
while(條件)
whilei<>0dodec(i);
while(i!=0)i--;
//也可寫作while(i)i--;
//在C/C++中非0即為真。
3、repeat-until&do-while
Pascal
C/C++
repeat語(yǔ)句until結(jié)束條件;
do{}while(運(yùn)行條件)
repeatint(i)untili>100;
do{i++;}while(i<=100);
七、數(shù)組
Pascal中數(shù)組的下標(biāo)可以隨意定義,而C/C++下標(biāo)始終為從0開始到(數(shù)組大小–1)。
Pascal
C/C++
定義
a:array[1..100]ofinteger;
b:array[1..10,1..10]ofint64;
inta[100];
intb[10][10];
含義
a為大小為100的integer數(shù)組,合法下標(biāo)為1到100
b為大小為10*10的int64數(shù)組,合法下標(biāo)為1,1到10,10
a為大小為100的int數(shù)組,合法下標(biāo)為0到99
b為大小為10*10的int數(shù)組,合法下標(biāo)為0,0到9,9;
使用
inc(a[21]);
b[2,2]:=b[1,1]+b[1,2]+b[2,1];
a[21]++;
b[1][1]=b[0][1]+b[0][0]+b[1][0];
數(shù)組清零
Pascal
C/C++
Fillchar(a,sizeof(a),0);
memset(a,0,sizeof(a));
//頭文件包含string.h
**如果要填最大:memset(a,127,sizeof(a))(但達(dá)不到INT_MAX)
如果要填最?。簃emset(a,128,sizeof(a))(但達(dá)不到INT_MIN)
如果填0:memset(a,0,sizeof(a))
如果填-1:memset(a,-1,sizeof(a))
八、字符串
C風(fēng)格的字符串就是字符數(shù)組。
C++和Pascal的字符串使用基本相同,只是C++中字符串下標(biāo)以0開始,Pascal以1開始。字符串處理很多這里不一一列舉,只寫最常用的幾個(gè)。
Pascal
C(包含<string.h>)
定義用:chars[]
C++(包含<string>)
定義用:strings
輸入
輸
出
Readln(s);
Writeln(s);
Scanf(“%s”,s);
Printf(“%s\n”,s);
注:不能輸入輸出c++的字符串
Cin>>s;
Cout<<s<<endl;
注:可以輸入輸出c的字符串
查找
pos(‘a(chǎn)’,s);//不存在返回0
沒(méi)有
s.find(‘a(chǎn)’);//不存在返回-1
串
長(zhǎng)
len=length(s);
Strlen(s)
len=s.size();或
Len=s.length();
復(fù)制
copy(st,pos,num);
st:=‘a(chǎn)bcde’;
s:=copy(st,3,2);
//s=‘cd’
Strcpy(s1,s2)
全部復(fù)制
Strncpy(s1,s2,n)
前n個(gè)復(fù)制
但沒(méi)有從第幾個(gè)開始的!
substr(pos,n)//返回從pos開始的長(zhǎng)度為n的子串;
strings1=“abcde”,s2;
s2=s1.substr(2,2);
//s2=“cd”
插入
insert(obj,target,pos);
st:=‘helloworld’;
st:=insert(‘‘,st,6);
//st=‘helloworld’
沒(méi)有
insert(pos,s)//在pos位置處插入字符串s;
strings1=“0123”;
s1.insert(1,“XYZ”);//s1=“0XYZ123”
刪除
delete(st,pos,num);
st:=‘helloworld’;
st:=delete(st,6,1);
//st=‘helloworld’
沒(méi)有
erase(pos,n)//從pos位置開始刪除n個(gè)字符;
strings1="abcdefghi";
s1.erase(5,3);//得到"abcdei"
C++還有以下功能:
用s.replace(2,2,"ttt")可以部分替換
用s.empty()判斷是否為空
可訪問(wèn)s[i],位置從0算起
可以s1+s2
可以s1=s2
可以比較s1==s2當(dāng)然><=>=<=!=都可以比較。
C++字符串整串讀入:
getline(cin,s)和cin>>s的區(qū)別:
getline(cin,s)
cin>>s
一次性整行讀入,直至行末尾。
只讀入一個(gè)“單詞”,遇空格和行末停止。
例如輸入;Howareyou?
s=”Howareyou?”
讀入整串含空格
例如輸入;Howareyou?
s=”How”
如果三個(gè)都讀:cin>>s1>>s2>>s3
**C++數(shù)字與數(shù)值之間的轉(zhuǎn)換:
#include<iostream>
#include<string>
#include<sstream>//必須加入
usingnamespacestd;
intmain()
{
stringtext="152";
intnumber;
stringstreamss;
ss<<text;//可以是其他數(shù)據(jù)類型
ss>>number;//string->int
cout<<number+100<<endl;
ss<<number;//int->string
stringstr=ss.str();
return0;
}
九、過(guò)程和函數(shù)
1、過(guò)程
在C/C++中沒(méi)有過(guò)程,但可以把返回值為“空”的函數(shù)理解為過(guò)程。
Pascal
C/C++
無(wú)參過(guò)程
procedure過(guò)程名;
說(shuō)明部分
begin語(yǔ)句部分end;
//說(shuō)明部分、begin、end語(yǔ)句部分統(tǒng)稱為過(guò)程體
void函數(shù)名();
{
主體部分;
return;
}
帶參過(guò)程
procedure過(guò)程名(形參表)
過(guò)程體
void函數(shù)名(形參表)
過(guò)程體
值傳和址傳:當(dāng)一個(gè)參數(shù)是值傳時(shí),形參在子過(guò)程中相當(dāng)于一個(gè)局部變量,對(duì)它的改變不影響實(shí)在的參數(shù)值。址傳則會(huì)影響。下例中a為值傳,b為址傳。初始a=5,b=5,運(yùn)行后a=5,b=10;
Pascal
C/C++
vara,b:integer;
proceduredoit(a:integer;varb:integer);
begin
b:=a+b;
a:=a+b;
end;
begin
a:=5;
b:=5;
doit(a,b);
writeln(a,‘‘,b);
end.
voiddoit(inta,int&b)
{
\\a
認(rèn)為值參,b認(rèn)為變量傳參
b+=a;
a+=b;
return;
}
intmain()
{
inta=5,b=5;
doit(a,b);
cout<<a<<‘‘<<b;
return0;
}
**用若干地址傳參可以給調(diào)用者傳回若干值
Voidtryit(int&x,int&y,int&z)
調(diào)用時(shí):tryit(a,b,c),可以傳回a,b,c的值。
**用數(shù)組名(也是地址)傳參可以傳回整組的數(shù)據(jù)
Voidtryit(inta[])
調(diào)用時(shí):tryit(x),可以傳回整個(gè)數(shù)組。
例如:
voidtryit(inta[])
{
for(inti=0;i<=10;i++)a[i]=i*2;
return;
}
intmain()
{
intx[10];
tryit(x);
for(inti=0;i<=10;i++)
cout<<x[i]<<endl;
system("pause");
return0;
}
**用指向函數(shù)的指針作為參數(shù),可以執(zhí)行指定的函數(shù)。(略)
STL的兩個(gè)應(yīng)用:
**C++快排函數(shù)
#include<algorithm>
Boolcom(inta,intb)
{
Returna>b;
}
Intmain()
{
Inta[10]={5,7,3,2,6,8,4,3,5,7};
Sort(a,a+10,com);//如果升序可以省略com.
For(inti=0;i<10;i++)
Cout<<a[i]<<”“;
}
**優(yōu)先隊(duì)列(以堆排為例)
#include<iostream>
#include<queue>
usingnamespacestd;
priority_queue<int>Q;
intmain()
{
intn,a;
cin>>n;
while(n--)
{
cin>>a;
Q.push(a);
}
while(!Q.empty())
{
cout<<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年協(xié)議修改確認(rèn)書格式
- 江蘇省鹽城市某校2024-2025學(xué)年四年級(jí)上學(xué)期期中素養(yǎng)大賽語(yǔ)文試卷
- 大數(shù)據(jù)在金融市場(chǎng)預(yù)測(cè)與決策支持中的應(yīng)用前景考核試卷
- 巖巷快速施工技術(shù)巷道事故考核試卷
- 智能家居設(shè)備的發(fā)展趨勢(shì)考核試卷
- 游樂(lè)園智能導(dǎo)覽系統(tǒng)應(yīng)用與推廣考核試卷
- 油炸食品制造業(yè)的食品安全風(fēng)險(xiǎn)預(yù)警與應(yīng)對(duì)考核試卷
- 上海開放大學(xué)杜詩(shī)精讀計(jì)分作業(yè)參考答案
- 水利工程中的施工資料管理考核試卷
- 光學(xué)透射電流檢測(cè)器考核試卷
- 砌筑工-技能評(píng)分記錄表3
- 司索工安全操作規(guī)程
- 人教版數(shù)學(xué)五年級(jí)上冊(cè)課本習(xí)題(題目)
- 鋼筋合格證(共6頁(yè))
- BIM技術(shù)全過(guò)程工程管理及應(yīng)用策劃方案
- 彎扭構(gòu)件制作工藝方案(共22頁(yè))
- 水利工程填塘固基、堤身加固施工方法
- 中醫(yī)針灸的骨邊穴怎樣定位
- 人教版八年級(jí)上冊(cè)英語(yǔ)單詞表默寫版(直接打印)
- 電脫水、電脫鹽講解
- 違約損失率(LGD)研究
評(píng)論
0/150
提交評(píng)論