C2第七次作業解題報告

看過題解後如果覺得還算有用,請幫忙加點我所在團隊博客訪問量

http://www.cnblogs.com/newbe/

http://www.cnblogs.com/newbe/p/4069834.html

http://www.cnblogs.com/newbe/p/4072005.html

求贊求祝福啊!!!

http://www.cnblogs.com/newbe/p/4058097.html

軟工老師太狠心,還請可憐一下同課不同命的我們吧~點一下文章末尾的推薦什麼的唄,有個回覆什麼的就更好了!

這次的填空選擇居然和第六次一樣...簡直汗..

1、文件比較

按要求操作即可,由於給定文件本身就是拍好序的,都用不到快排了,

注意這裏的字典序略有不同,是在不區分大小寫的前提下小寫的拍在大寫的前面,舉個例子:a<B<i<THIS ; this>tHIS>THIS...

誤!!!!!尷尬

後來我通知了一下助教...然後他就默默改回正常的字典序了!...汗

所有這成了一道水的不能再水的題了..大家隨意切吧..

如果用的是fgets的話注意一下換行符什麼的

2、交叉引用生成器

又是題意不清的題..

注意點:

a、單詞只接受含有字符和'-'的字符串,其他都是分隔符,同時-p,p-這樣的字符串不算單詞,要整體性忽略,貌似吧p算作單詞的話會wa

b、四個連詞要不區分大小寫的判斷,貌似測試點裏面只有首字母大寫的case...另外不能用strcmpi函數,因爲linux環境下沒有這個汗,使用strcasecmp可輕鬆搞定

然後就是看rp了...

3、內存回收

瞭解拓撲排序什麼的話這就是一道水題..

或者可以參考最短路里面的spfa算法,總之就是用用廣搜即可,連好有向邊然後搞就好了,存到鄰接表或者鄰接矩陣都無所謂..因爲圖大小隻有55*55

或許深搜也可以,沒試過,比較5s的時限~

4、小數轉換爲分數

對於有限小數X=0.a1a2…an來說,這個問題比較簡單,X就等於(a1a2…an)/10^n。

對於無限循環小數X=0.a1a2…an(b1b2…bm)來說,其複雜部分在於小數點後同時有非循環部分和循環部分,我們可以做如下的轉換:

X=0.a1a2…an(b1b2…bm)
=>10^n*X=a1a2…an.(b1b2…bm)
=>10^n*X=a1a2…an+0.(b1b2…bm)
=>X=(a1a2…an+0.(b1b2…bm))/10^n

對於整數部分a1a2…an,不需要做額外處理,只需要把小數部分轉化爲分數形式再加上這個整數即可。對於後面的無限循環部分,可以採用如下方式

進行處理:

令Y=0.b1b2…bm,那麼
10^m*Y=b1b2…bm.(b1b2…bm)
=>10^m*Y=b1b2…bm+0.(b1b2…bm)
=>10^m*Y-Y=b1b2…bm
=>Y=b1b2…bm/(10^m-1)

將Y代入前面的X的等式可得:

X=(a1a2…an+Y)/10^n
=(a1a2…an+b1b2…bm/(10^m-1))/10^n
=((a1a2…an)*(10^m-1)+(b1b2…bm))/((10^m-1)*10^n)

於是用大數搞一下,然後分子分母兩邊gcd一下就ok了..

主要噁心的地方在於必須使用大數,不然4,7,10這三個點過不去,沒用大數的話就別試了,你讀入都會爆long long的

5、矩陣乘法C

200s的時限也是給跪了!太神了!

其實還是矩陣,最大能產生的數3000*3000*200000,本以爲要用LL,沒想到int存就能水過...

由於 m * n < 5000000,所以我把矩陣存在了線性數組裏了,然後操作的時候注意一下即可,可能不用線性數組會有問題?不清楚..

注意點:"按整數右對齊方式輸出,各列等寬",重點是各列等寬,這時候需要的就是所有矩陣元素的最大位寬而不是每行的最大位寬了。

發佈了165 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章