資源描述:
《劉汝佳《算法入門經(jīng)典》答案》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、1.double類型的輸出格式為“%lf”?2.doublepi=4.0*atan仃.0);這樣比較精確。3.printf(〃『』);可以在輸出前補(bǔ)充上0,但是換做其他的字符就不可以了。4?絕對值的輸出用%d,如:printf("%d",abs(TO));不可以用%£第二章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(2011-07-2121:40:01)[編輯][刪除]標(biāo)簽:分類:算法競賽入門經(jīng)典雜談1.調(diào)試程序的新方法:IDE,gdb.(還沒有學(xué)會)2.判斷是否是整數(shù)floor(m+0.5)二二m?1.AABB問題:法一:列
2、舉,然后判斷是否是完全平方數(shù),m二1100*a+ll*b;m==floor(m+0.5)法二:枚舉所有的數(shù),然后分離位數(shù),分別判斷是否相等。2?階乘之和問題:輸出結(jié)果的后六位printf(/,%d/,,s%100000)3?使用計(jì)時(shí)器,可以測試程序的效率#include
3、ttdefineLOCALintmain(){ttifdefLOCALfreopen(,zdata?in","r",stdin);freopenC^data.out",stdout);ttendif(2)文件的保存和讀取:intmainOFILE*fin,*fout;fin=fopen(,zdata?in",〃rb〃);fout二fopen("data,out","wb");fscanf(fin,〃%d〃,&a);fprintf(fout,"%d",a);fclose(fin);fclose(fo
4、ut);}第三章:數(shù)組和字符串(2011-07-2220:27:54)[編輯][刪除]標(biāo)簽:分類:算法競賽入門經(jīng)典雜談1.當(dāng)數(shù)組需要開的很大的時(shí)候,數(shù)組a[1000]的定義放到main函數(shù)外,否則會異常退出。2?字符串其實(shí)就是數(shù)組,所以字符串里的函數(shù)在數(shù)組里同樣適用,如memset(b,a,sizeof(int)*k):在a中復(fù)制k個(gè)元素給b,是從首元素開始的。memset(b,a,sizeof(a))把整個(gè)全部復(fù)制amemset(a,0,sizeof(a)):將a全部初始化為0o1.開燈問題:控制等
5、的開關(guān):if(j%i==0)a[j]=!a[j](之前要調(diào)用mcmset(a,0,sizeof(a)))2.蛇形填數(shù):四個(gè)循環(huán)走:下一左一右一上;外面再套一層循環(huán),控制個(gè)數(shù)。3.最長回文:(1)怎樣讀取(2)怎樣原樣輸出(3)怎樣判斷是否是冋文(1)不可以用scanf因?yàn)椴豢梢宰x取空格,fgets(buf,sizeof(buf),stdin),從標(biāo)準(zhǔn)輸入流中讀取,也可以從文件中讀取,但此時(shí)讀取的是一整行。字符操作函數(shù):isalpha,isdigital,isprint,isupper,islower,
6、toupper,tolower,他們的返回值都是int型。(2)讀取以后為了方便要把所有的字符轉(zhuǎn)換成大寫,但是要原樣輸出,所以要重新定義一個(gè)數(shù)組存放之前地字符串,并且設(shè)置一個(gè)數(shù)組存放他在原來字符串中的位置。(3)判斷回文;可以從頭開始,但是從中間開始會更簡便(要注意奇數(shù)個(gè)和偶數(shù)個(gè)的處理是不一樣的)第七章暴力求解(2011-07-2814:49:10)[編輯][刪除]標(biāo)簽:分類:算法競賽入門經(jīng)典雜談7.1簡單枚舉7.1.1除法輸入正整數(shù)n,按從大到小的順序輸出所有形如abcde/fghij=n的表達(dá)式,
7、其中a~j為0~9的數(shù)字(不可重復(fù))。2Un<=79.樣例輸入:62樣例輸出:79546/01283=6294736/01528=62#include〈iostream>#includeusingnamespacestd;intfindstartvalue(intm)//求的第一個(gè)是m的倍數(shù)的5位數(shù){intml=m*1234;intm2二(1234/m+l)*m;;//防止m很小Teturnml>m2?ml:m2;}boolcheck(intmO,charflag[10]){for(
8、intk=0;k<5;k++)//不可以用while(m0>0)因?yàn)檫@樣如果除數(shù)中有0就測不出來了{(lán)if((++flag[m0])>1)returnfalse;m0/二10;}Teturntrue;}voidfoo(intm)intm0=findstartvalue(m);for(;m0<98766;mO+=m)//mO的最大數(shù)是98765{charflag[10]={0};if(check(mO,flag)==false)continue;//檢查被除