算法大賽試題集合_第1頁(yè)
算法大賽試題集合_第2頁(yè)
算法大賽試題集合_第3頁(yè)
算法大賽試題集合_第4頁(yè)
算法大賽試題集合_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2011全國(guó)軟件設(shè)計(jì)大賽題真題,編程題:1.在實(shí)際的開(kāi)發(fā)工作中,對(duì)于字符串的處理是最常見(jiàn)的編程任務(wù),此題目是要求程序?qū)τ脩糨斎氲淖址M(jìn)展處理,具體規(guī)章如下:每個(gè)單詞的首字母變?yōu)榇髮?xiě)。把數(shù)字與字母之間用下劃線隔開(kāi),使構(gòu)造清楚。多個(gè)空格變?yōu)橐粋€(gè)空格。例如:輸入:youandmewhatcpp2005pragram則輸出:YouAndMeWhatCpp_2005_Program輸入:this is a 99cat則輸出:ThisIs A99_Cat*/2*A,B,C,D,E,F,G,H,I,J,10名學(xué)生有可能參與計(jì)算機(jī)競(jìng)賽,也可能不參與,由于某種緣由他們受到以下條件的約束:假設(shè)A參與,B也參與;假設(shè)C不參與,D也不參與;AC中只能有一個(gè)人參與;BD中有且僅有一個(gè)人參與;D、E、F、G、H2人參與;CG或者都參與,或者都不參與;C、E、G、I2人參與假設(shè)E參與,那么FG也都參與。假設(shè)F參與,G、H就不能參與假設(shè)I、J都不參與,H必需參與請(qǐng)編程依據(jù)這些條件推斷10名同學(xué)參賽者名單比方LCDGJ 代碼在Num2里3/*要求找出具有以下性質(zhì)的數(shù)的個(gè)數(shù)(n):先輸入一個(gè)自然數(shù)n(n<=500),然后對(duì)此自然數(shù)依據(jù)如下方法進(jìn)展處理:①.不作任何處理;②.在它的左邊加上一個(gè)自然數(shù),但該自然數(shù)不能超過(guò)原數(shù)首位數(shù)字的一半;③.加上數(shù)后,連續(xù)按此規(guī)章進(jìn)展處理,直到不能再加自然數(shù)為止.樣例: 輸入: 6滿足條件的數(shù)為 6162612636136輸出: 6*/privatefunctionfenjie(cnum:int,count:int,str:String):void{if(cnum==0)return;if(count==max)trace(str);for(vari:int=cnum;i>0;i--){if(count+i>max)continue;fenjie(i,count+i,str+i);}}/*.和為一個(gè)素?cái)?shù),且首尾兩數(shù)字之和也為一個(gè)素?cái)?shù)。編程打印出全部的排法。*/七去除級(jí)數(shù)分別余三、三、五、五。問(wèn)這樓房共有多少級(jí)階梯?〔400級(jí)。101個(gè)洞中沒(méi)有找到兔子,就1個(gè)洞,到第3個(gè)洞中去找,也沒(méi)找到兔子,就間隔2個(gè)洞,到第6個(gè)洞中去找。以后狼每次多隔1個(gè)洞去找兔子,??。這樣狼始終找不到兔子。請(qǐng)問(wèn)兔子可能躲在哪個(gè)洞中?2、一位數(shù)學(xué)家和一些游客共81人不幸落入強(qiáng)盜手中,強(qiáng)盜把俘虜排成一隊(duì),宣布每天處理全部第2的N次方個(gè)俘虜〔N>=0,而只放走剩下的最終一個(gè)。由于數(shù)學(xué)家身懷重任,不得不選擇了一個(gè)恰當(dāng)?shù)奈恢枚罱K被放走。請(qǐng)問(wèn)他歸初排在第幾個(gè)位置。3、有一堆禮物,工作人員無(wú)論是分成二個(gè)一份,還是三個(gè)、四個(gè)、五個(gè)、六個(gè)一份,總是多一個(gè)。請(qǐng)問(wèn)這堆禮物至少多少個(gè)?publicclassTest9{publicstaticvoidmain(String[]args){//2、3、4、5、6的最小公倍數(shù)inti=7;while(true){if(i%2==1&&i%3==1&&i%4==1&&i%5==1&&i%6==1){System.out.println(i);break;}i=i+6;}}}、一付撲克中拿出全部的黑桃??K按挨次排好。第一次翻出第一張牌——邊,再拿出其次張放到牌的最下面。以后每次都翻出一張牌,再把一張牌放到最終,問(wèn)第八次翻出的牌是哪一張?publicclassTest10{publicstaticvoidmain(String[]args){Stringa[]={“A“,“2“,“3“,“4“,“5“,“6“,“7“,“8“,“9“,“10“,“J“,“Q“,“K“};List<String>list=newLinkedList<String>;intj;for(inti=0;i<a.length;i++){list.add(a[i]);}for(j=0;j<7;j++){list.remove(0);list.add(list.remove(0));}System.out.println(list.get(0));}}packagetest;/*2、一位數(shù)學(xué)家和一些游客共81人不幸落入強(qiáng)盜手中,強(qiáng)盜把俘虜排成一隊(duì),宣布每天處理全部第2的N次方個(gè)俘虜〔N>=0不得不選擇了一個(gè)恰當(dāng)?shù)奈恢枚罱K被放走。請(qǐng)問(wèn)他歸初排在第幾個(gè)位置。*/publicclassTest8{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinta[]=newint[81];for(inti=0;i<a.length;i++){a[i]=i+1;}//intb[]=a;intj=0;intcount=0;while(count!=1){count=0;for(inti=0;i<=6;i++){a[(int)(Math.pow(2,i))-1]=0;//System.out.println((int)Math.pow(2,i));}for(inti=0;i<a.length;i++){j=i;if(a[i]==0){for(intk=j+1;k<a.length;k++){if(a[k]!=0){a[i]=a[k];a[k]=0;//j=k;//System.out.println(“a[“+i+“]=“+a[i]+““+“a[“+k+“]=“+a[k]);break;}}}}for(inti=0;i<a.length;i++){if(a[i]!=0)count++;}}for(inti=0;i<a.length;i++){if(a[i]!=0)System.out.println(a[i]);}}}packagetest;importjava.util.Arrays;importjava.util.Scanner;/*驗(yàn)證卡布列克常數(shù),對(duì)于一個(gè)四位數(shù),進(jìn)展以下運(yùn)算1〕將組成該四位數(shù)的44個(gè)數(shù)字組成的最大的四位數(shù);44〔如果高位為0則取得的數(shù)缺乏4位;求兩個(gè)數(shù)的差,得到一個(gè)的四位數(shù)〔高位0保存,稱(chēng)為對(duì)N運(yùn)算。有這樣的規(guī)律:對(duì)一個(gè)各位數(shù)字不全一樣的四位數(shù)重復(fù)進(jìn)展假設(shè)干次卡布列克運(yùn)算,最終得到的結(jié)果總是6174。這個(gè)數(shù)被稱(chēng)為卡布列克常數(shù)。N從鍵盤(pán)輸入。6174時(shí)的運(yùn)算次數(shù)。*/publicclassTest11{privatestaticintcount=0;publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println(“請(qǐng)輸入一個(gè)不完全一樣的四位數(shù)“);Stringstr=sc.nextLine;charc1[]=str.toCharArray;verify(c1);Arrays.sort(c1);StringstrMin=String.copyValueOf(c1);StringstrMax=““;for(inti=c1.length-1;i>=0;i--){strMax=strMax+c1[i];}//System.out.println(strMax+““+strMin);intmax=Integer.parseInt(strMax);intmin=Integer.parseInt(strMin);System.out.println(“max=“+max+““+“min=“+min);kablk(strMax,strMin);}publicstaticvoidverify(char[]c){if(c.length<4||c.length>4){System.out.println(“長(zhǎng)度不符合要求“);System.exit(0);}booleanflag=true;for(inti=0;i<c.length-1;i++){if(c[i]!=c[i+1]){flag=false;break;}}if(flag){System.out.println(“四位數(shù)完全相等“);}}publicstaticvoidkablk(StringstrMax,StringstrMin){count++;intmax=Integer.parseInt(strMax);intmin=Integer.parseInt(strMin);inttemp=max-min;if(temp==6174){System.out.println(“count=“+count);}elseif(temp>0){charc1[]=String.valueOf(temp).toCharArray;Arrays.sort(c1);strMin=String.copyValueOf(c1);for(inti=c1.length;i<4;i++){strMin=“0“+strMin;}c1=strMin.toCharArray;//System.out.println(c1);min=Integer.parseInt(strMin);strMax=““;for(inti=c1.length-1;i>=0;i--){strMax=strMax+c1[i];//System.out.println(c1[i]);}max=Integer.parseInt(strMax);kablk(strMax,strMin);System.out.println(“max=“+max+““+“min=“+min);}else{return;}}}〔+-號(hào)湊成相應(yīng)的等式。如能湊成,則打印出這些算式。如不能則打印“NOANSWE1()2()3()4()5()6()7()8()9=R“百錢(qián)買(mǎi)百雞”是我國(guó)古代的著名數(shù)學(xué)題。題目這樣描述:31只公雞,2文錢(qián)可以買(mǎi)一只母雞,13100100只雞,那么各有公雞、母雞、小雞多少只?與之相像,有“雞兔同籠“問(wèn)題。推斷一字符串是否是回文數(shù),如121、12321、ABA等(字符串輸入時(shí)以‘.’完畢)。如輸入:12321.輸出:yes找數(shù)。一個(gè)三位數(shù),各位數(shù)字互不一樣,十位數(shù)字比個(gè)位、百位數(shù)字之和還要大,且十位、百位數(shù)字之和不是質(zhì)數(shù)。編程找出全部符合條件的三位數(shù)。注:1.不能手算后直接打印結(jié)果。2.1和自身外,再?zèng)]有其它因數(shù)的大于1的自然數(shù)。A、B、C、D、E3個(gè)人去完成。1〕C2〕C〕假設(shè)CDE就只能去4〕、、D5〕假設(shè)B去了,、E就不能都去。編程找出此項(xiàng)任務(wù)該由哪三人去完成的全部組合。李潤(rùn)偉(22048303)17:45:55截?cái)?shù)問(wèn)題:135768,可13,57,68三個(gè)自然數(shù)。假設(shè)某自然數(shù)不能平均截取(3整除),可將該自然數(shù)高位補(bǔ)零后截取?,F(xiàn)編程從鍵盤(pán)上輸入一個(gè)自然數(shù)N(N的位數(shù)<12),計(jì)算截取后第一個(gè)數(shù)加第三個(gè)數(shù)減其次個(gè)數(shù)的結(jié)果。試編程找出能被各位數(shù)字之和整除的一切兩位數(shù)6,假設(shè)把個(gè)位數(shù)字移到首位,4出滿足條件的最小正整數(shù)。1開(kāi)頭,小明算了算,總共消滅了2021,試編程求這本書(shū)一共有多少頁(yè)?3032先1先令。試編程求出男人女人小孩各多少人?編程找出四個(gè)互不相等的自然數(shù),它們之中任意兩數(shù)之和為偶數(shù), 任意三數(shù)之和可以被3整除,而且這四個(gè)數(shù)的和越小越好(50).0--9之間的數(shù)字,現(xiàn)有如下等式成立:a+bc+def=ghij,編程求出滿足上述條件等式的個(gè)數(shù)并將全部等式打印輸出.下面的豎式表示,圖中的“*“2,3,5,7代替,因此稱(chēng)為素?cái)?shù)乘法豎式.***× ***************一個(gè)四位數(shù)是一個(gè)完全平方數(shù),減去一個(gè)每位數(shù)字都一樣的四位數(shù)(1111,5555)后,仍是一個(gè)完全平方數(shù).請(qǐng)編程打印出全部這樣的四位數(shù).12345679,9,111111111,試求:素?cái)?shù)(1)當(dāng)這個(gè)數(shù)乘以什么數(shù)時(shí),5所組成的九位數(shù)?(2)當(dāng)這個(gè)數(shù)乘以什么數(shù)時(shí),9所組成的九位數(shù)?李先生和他的孫子同誕生于20世紀(jì),他的孫子與他的年齡之差為60歲,李先生和他的孫子3,4,5,6除,1,2,3,4.編程求出李先生和他的孫子各誕生在哪一年.16/64是一個(gè)分子和分母都是兩位數(shù)的真分?jǐn)?shù),且分子的個(gè)位數(shù)與分母的十位數(shù)一樣.格外驚異的是:假設(shè)把該分?jǐn)?shù)的分子的個(gè)位數(shù)和分母的十位數(shù)同時(shí)劃去,所得到的結(jié)果正好等于原分?jǐn)?shù)約分后的結(jié)果.16/64=1/4.編程找出全部滿足上述條件的真分?jǐn)?shù).甲去買(mǎi)東西,要付給乙19元,而甲只有3元一張的錢(qián),乙只有5元一張的錢(qián).請(qǐng)為他們?cè)O(shè)計(jì)一個(gè)交換方案.有六箱貨物,重分別是5噸、2噸、3.5噸、1.7噸、1噸、5.1噸。現(xiàn)有一臺(tái)貨車(chē),載重量10噸。設(shè)計(jì)一個(gè)程序,使這次車(chē)運(yùn)走的貨物最多。30503件,21件。期望把全部獎(jiǎng)品都發(fā)到獲獎(jiǎng)?wù)呤种小U?qǐng)找出全部方案〔即各等獎(jiǎng)各有多少人。一個(gè)自然數(shù)是素?cái)?shù),且它的數(shù)字位置經(jīng)過(guò)任意對(duì)換后仍為素?cái)?shù),稱(chēng)為確定素?cái)?shù). 例如13.試找出全部這樣的四位確定素?cái)?shù)一個(gè)自然數(shù),假設(shè)它的質(zhì)因數(shù)至少是兩重的(一樣的質(zhì)因數(shù)至少個(gè)數(shù)為二個(gè),如36=2*2*3*3)則稱(chēng)該數(shù)為“秀麗數(shù)“.假設(shè)相鄰兩個(gè)自然數(shù)都是“秀麗數(shù)“,就稱(chēng)它們?yōu)椤皩\生秀麗數(shù)“.例如8與9就是一對(duì).請(qǐng)編程再找出一對(duì)“孿生秀麗數(shù)“。1開(kāi)頭,小明算了算,總共消滅了2021,試編程求這本書(shū)一共有多少頁(yè)?publicclassTest3{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubcharbuf[]={”a”,”b”,”c”};intk=buf.length;//選擇幾個(gè)字母排序//charr[]=newchar[k];perm(0,buf,k);//startk}publicstaticvoidperm(intstart,char[]buf,intk){if(start==k){//一個(gè)字母的全排列for(inti=0;i<k;i++){System.out.print(buf[i]);}System.out.println;}elseif(start<k){//多個(gè)字母全排列for(inti=start;i<k;i++){chartemp=buf[start];//交換數(shù)組的第一個(gè)元素和后續(xù)元素buf[start]=buf[i];buf[i]=temp;perm(start+1,buf,k);//后續(xù)元素全排列tempbuf[start];//buf[start]=buf[i];buf[i]=temp;System.out.println(“buf[start]=“+buf[start]+“buf[i]=“+buf[i]);System.out.println(“start=“+start+“i=“+i);}}else{return;}}}任意輸入二個(gè)自然數(shù),假設(shè)商為整數(shù),則直接顯示商;否則把商分解成一個(gè)自然數(shù)和一個(gè)正的既約真分?jǐn)?shù)之和才顯示。例如:輸入:9,3 顯示:9/3=3輸入:8,6 顯示:8/6=1+1/3看成二個(gè)分?jǐn)?shù)a/b,c/d.求這二個(gè)分?jǐn)?shù)之和.和的顯示格式為:輸入3,2,1,6 輸出: 3/2+1/6=1+2/3。在自然數(shù)中,各位數(shù)字之和的11倍正好等于自身的自然數(shù)只有一個(gè).請(qǐng)找出這個(gè)自然數(shù)。求全部不超過(guò)1000的這樣的整數(shù),它的平方的末二位數(shù)字一樣但不為0“mailto:ecol0408@gmail“Ecol<ecol0408@gmail> packagetoday;importjava.util.ArrayList;importjava.util.List;publicclasshelp13{staticList<Integer>count=newArrayList<Integer>;staticbooleanfunction(intnum){for(inti=0;i<10000;i++){count.add(0);}booleanbl=false;inti=2;while(num>1){if(num%i==0){count.set(i-1,count.get(i-1)+1);num/=i;i=2;}else{i++;}}for(intk=0;k<count.size;k++){if(count.get(k)<2&&count.get(k)>0){//bl=true;break;}if(k==count.size-1){bl=true;}}count=null;count=newArrayList<Integer>;returnbl;}publicstaticvoidmain(String[]args){for(inti=3;i<=9999;i++){if(function(i)&&function(i+1)){System.out.println(i);}}}}packagetest;//4倍,試編程找出滿足條件的最小正整數(shù)publicclassTest16{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubStringstr=““;intn=0,m=0;intcount=1;while(true){for(inti=1;i<3;){str=String.valueOf(n);Stringtemp=str.substring(0,str.length-1);str=str.substring(str.length-1)+temp;m=Integer.valueOf(str);if(m==n*4){System.out.println(n+““+m);System.exit(0);}n=n+10;i=(int)(n/Math.pow(10,str.length-1));//2}count++;}}}N,PNPM,N(0<N<M)為何值時(shí),1989m1989n0NX(3<=N<=5),將組成該數(shù)的各位數(shù)字重排列成一個(gè)最大數(shù)和一個(gè)最小數(shù)作減法,其差值再重復(fù)前述NY,使之重復(fù)消滅.例如:X=213,則有 213→321-123=198981-189=892982-289=693963-369=594954-459=495954-459=495Y=954.packagetest;importjava.util.Scanner;/*任意輸入二個(gè)自然數(shù),假設(shè)商為整數(shù),則直接顯示商;否則把商分解成一個(gè)自然數(shù)和一個(gè)正的既約真分?jǐn)?shù)之和才顯示。例如:輸入:9,3 顯示:9/3=3輸入:8,6 顯示:8/6=1+1/3*/publicclassTest17{publicstaticvoidmain(String[]args){inta,b,n,m,l;Scannersc=newScanner(System.in);System.out.println(“a=“);a=sc.nextInt;System.out.println(“b=“);b=sc.nextInt;n=a/b;//商的整數(shù)局部m=a%b;//余數(shù)if(m!=0)//0{l=Gcd(m,b);//求出余數(shù)與被除數(shù)的最大公約數(shù)m=m/l;//分子;b=b/l;//分母System.out.println(a+“/“+b+“=“+n+“+“+m+“/“+b);}elseSystem.out.println(a+“/“+b+“=“+n);}staticintGcd(intm,intn){if(n==0)returnm;elsereturnGcd(n,m%n);}}任給一個(gè)自然數(shù)n,求出這個(gè)自然數(shù)不同因數(shù)的個(gè)數(shù)Mn,nm的因數(shù)。例如輸入2 則輸出2由于2有2個(gè)因數(shù)。k,k〔n^2-mn-m^2〕^2=1m^2+n^2m,n。一個(gè)四位數(shù)為ABCD,假設(shè)A+C和B+D的值相等,則稱(chēng)這個(gè)四位數(shù)為穿插數(shù),求四位數(shù)的穿插數(shù)和個(gè)數(shù)。定義2x6=12 2612,2612122也是6的倍數(shù)。 3x4=12 3和4也是12的因數(shù)。12是3和4的倍數(shù)。 整數(shù)A乘以整數(shù)B得到整數(shù)C,整數(shù)A與整數(shù)B就稱(chēng)做整數(shù)C的因數(shù),反之整數(shù)C就為整數(shù)A與整數(shù)B的倍數(shù)。packageeclip;11這個(gè)自然數(shù)。*/publicclassTest4{publicstaticlongcheck(longnum){longtemp=num;longsum=0;while(temp!=0){sum+=temp%10;temp=temp/10;}returnsum*11;}publicstaticvoidmain(String[]args){longnum=1;while(true){if(check(num)==num){System.out.println(num);break;}num++;}}}N,PNPpackageecol;為使分發(fā)時(shí)有足夠多的零鈔,同時(shí)又盡量不使每個(gè)人領(lǐng)到的錢(qián)太零碎。每個(gè)月她都要計(jì)算出各種面值的鈔票〔1005010521〕各需要多少?gòu)垺D隳芊駷樗O(shè)計(jì)一個(gè)程序,從鍵盤(pán)輸入10個(gè)人的工資,再計(jì)算出各種面值的鈔票各需要多少?gòu)垼?/publicclassmony{staticvoidfunction(intnum){intarray[]=newint[5];

且至少有三個(gè)位array[0]=100;array[1]=50;array[2]=10;array[3]=5;array[4]=2;System.out.print(num+“=“);for(inti=0;i<array.length;i++){if(num/array[i]>0){System.out.print(num/array[i]+“*“+array[i]+(num%array[i]>0?“+“:““));}num%=array[i];}if((num/1)>0){System.out.println(num/1+“*“+1);}}publicstaticvoidmain(String[]args){function(12345);}}n,n/2,將重復(fù)奇數(shù)次字符個(gè)化的字符串,例如:“gooddd”:godddddddddd,goddddd,god....d(16d),godddddddd,godddd,godd,god514CM23CM、15CM19CM截一根的前提下,問(wèn)各截多少根,使所剩余料最少packageecol;importjava.util.Scanner;publicclassmath{staticbooleanfunction(intnum){booleanbl=false;inti;for(i=2;i<=(int)Math.sqrt(num);i++){if(num%i==0){break;}}if(i>(int)Math.sqrt(num)){bl=true;}returnbl;}staticbooleanfunction1(intnum){booleanbl=false;int[]array=newint[10];Stringstr=““+num;for(inti=0;i<str.length;i++){array[Integer.parseInt(str.substring(i,i+1))]++;}for(inti=0;i<10;i++){if(array[i]>=3){bl=true;break;}}returnbl;}publicstaticvoidmain(String[]args){Scannerin=new Scanner(System.in);intN=in.nextInt;for(inti=10000;i<=99999;i++){if(i%N==0&&function(i/N)&&function1(i)){System.out.println(i/N);break;}}}}10〔20〕,每個(gè)數(shù)加上它所存儲(chǔ)位置的下標(biāo)的和為質(zhì)數(shù):110521011〔留意算法效率〕2~1000,〔281,2,4,7,141+2+4+7+14=2828〕?!睞B,BA,AB,

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論