總結(jié)寫題目遇見的問題(坑)
1.大多數(shù)的題目都可以用數(shù)組來做寓落,但是在做OJ題目的時(shí)候,我發(fā)現(xiàn)有時(shí)候Wrong Answer的出現(xiàn)不是代碼的問題荞下,也不是算法問題伶选,可能只是數(shù)組大小的問題,做到現(xiàn)在我發(fā)現(xiàn)對于一維數(shù)組小于100時(shí)候尖昏,有時(shí)會(huì)出現(xiàn)Wrong Answer即使自己測試的結(jié)果都是正確的仰税,但是再修改數(shù)組大小大于100時(shí)就不會(huì)報(bào)錯(cuò)了.可以定義為:a[101]或者a[101][101].以個(gè)題目作為例子
在OJ2014(鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2014)
題目:青年歌手大獎(jiǎng)賽中,評委會(huì)給參賽選手打分抽诉。選手得分規(guī)則為去掉一個(gè)最高分和一個(gè)最低分陨簇,然后計(jì)算平均得分,請編程輸出某選手的得分迹淌。
Input:輸入數(shù)據(jù)有多組河绽,每組占一行,每行的第一個(gè)數(shù)是n(2<n<=100)唉窃,表示評委的人數(shù)耙饰,然后是n個(gè)評委的打分。
Output:對于每組輸入數(shù)據(jù)纹份,輸出選手的得分苟跪,結(jié)果保留2位小數(shù)廷痘,每組輸出占一行。
Simple Input:
3 99 98 97
4 100 99 98 97
Simple Output:
98.00
98.50
這是一道簡單的題件已,但是我開始做的時(shí)候因?yàn)閷τ诔跏蓟瘮?shù)組大小是
int a[100]
//正確的定義應(yīng)該是a[101]笋额,數(shù)組a的大小要大于100。
OJ一直給我判定Wrong Error.然后我就一直改代碼拨齐,改算法鳞陨,這樣一直重復(fù),一直Wrong Error瞻惋。算是自己踩過的坑吧厦滤。
2.OJ對數(shù)組的大小定義問題的坑:
以個(gè)題目作為例子當(dāng)我做OJ2023題(鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2023)
題目:假設(shè)一個(gè)班有n(n<=50)個(gè)學(xué)生,每人考m(m<=5)門課歼狼,求每個(gè)學(xué)生的平均成績和每門課的平均成績掏导,并輸出各科成績均大于等于平均成績的學(xué)生數(shù)量。
Input:輸入數(shù)據(jù)有多個(gè)測試實(shí)例羽峰,每個(gè)測試實(shí)例的第一行包括兩個(gè)整數(shù)n和m趟咆,分別表示學(xué)生數(shù)和課程數(shù)。然后是n行數(shù)據(jù)梅屉,每行包括m個(gè)整數(shù)(即:考試分?jǐn)?shù))值纱。
Output:對于每個(gè)測試實(shí)例,輸出3行數(shù)據(jù)坯汤,第一行包含n個(gè)數(shù)據(jù)虐唠,表示n個(gè)學(xué)生的平均成績,結(jié)果保留兩位小數(shù)惰聂;第二行包含m個(gè)數(shù)據(jù)疆偿,表示m門課的平均成績,結(jié)果保留兩位小數(shù)搓幌;第三行是一個(gè)整數(shù)杆故,表示該班級中各科成績均大于等于平均成績的學(xué)生數(shù)量。
每個(gè)測試實(shí)例后面跟一個(gè)空行溉愁。
我最初定義數(shù)組大小的方式:
while(scanf("%d %d",&m,&n)==2)
{
????int count,t;
????float a[m][n] , temp , average[n];
}
在我自己的編譯器Dev C++上編譯是沒問題的处铛,運(yùn)行結(jié)果也正確。但是OJ上是會(huì)顯示Compilation Error
所以說明OJ對于數(shù)組的大小必須是在定義的時(shí)候就確定它的大小.
3.格式問題的坑:
我有時(shí)候在寫代碼的時(shí)候可能最后一行最后一個(gè)數(shù)據(jù)輸出后多輸出了一個(gè)空格拐揭,這種情況會(huì)出現(xiàn)Compilation Error.