1. 程式人生 > >簡單題目練習一,題解(C++版)

簡單題目練習一,題解(C++版)

題目連結

題解

  • 不存在的

題解

hdu-2011 多項式求和

題意很明確,公式已經給出了
注意:
- 正負交替,這裡使用flag *= -1;的方法
- 在進行運算的時候,如果使用的是int型別,如需要轉換為double型別
- 函式型別為double

hdu-2005 第幾天?

分析題目,計算出該日期是該年的第幾天。
首先,每個月份的天數需要知道,2月是需要區分的,需要加上平年閏年的判斷,根據年來改變2月的天數。
其次,假如日期為2006/3/12那麼,3月的天數是不需要的,直接1月+2月+12即可
注意:

  • 閏年的判斷
  • 2月隨時年德變化而變化
  • 把每個月的天數初始化比較簡單

hdu-2026 首字母變大寫

不知道有沒有坑,但是不能沒有防坑的意識。
分析題目,輸入一個英文句子,將每個單詞的第一個字母改成大寫字母。
如果是一個單詞的話,開始字母前一定有空格(除首單詞)

注意:
- 可能單詞之間不只是一個空格,要防止這個
- 還有隻有一個單詞的樣例
- 首單詞要單獨處理
- 使用gets()方法可以排除空格的影響

hdu-2041 超級樓梯

可以理解為是一個遞推,也可以用dfs思想
分析題目,兩種走法,一共n階臺階,使用陣列的方法儲存走到當前階的不同走法,例如a[2]=1 a[3]=2代表走到第2階一共1中方法,走到3階一共2種走法
那麼a[4]呢,它只能從2或3階臺階走上去,所以a[4]=a[3]+a[2]

,所以,a[n]=a[n-1]+a[n-2]
注意:

  • 打表計算不容易超時(先把4-40階臺階所有的走法都算出來,根據輸入的臺階數直接輸出結果)
  • 有想法的可以用dfs方法寫寫試試

hdu-2089 不要62

和上一題一樣需要打表
題目分析,要檢測有沒有62和4,那麼換成字串,只用內建函式就可以直接檢測有沒有,首先計算出1000005以內的數字,如果n有4或62,那麼s[n]=0,反之s[n]=1,所以給出區間就可以直接把m到n的s[]和加出來就是答案了
注意:

  • 多組輸入
  • 只用strstr函式,itoa函式(不知道是什麼自己查)

hdu-1715 大斐波數

題目分析,到了F題就不可能是簡單題了,肯定有坑,想想1000位的斐波那契數,肯定很大(幾百位),long long肯定會爆,乘不下,那麼自己構建一個數組,每一個代表每一位,a[0]代表個位,a[1]代表十位,為啥是從做開始數位遞增,寫寫就知道了,這樣寫好寫,剩下的就是模擬加法,有進位
注意:

  • 進位可能比原來的數字更長
  • 需要打表,用一個二維陣列,第一個下表表示輸入的位數,第二個下表各個位上的陣列
  • 輸出的時候需要把數字倒過來,即陣列倒著輸出,要把多餘的0過濾
  • 注意進位
  • 需要初始化前面兩個數字

hdu-1716 排列2

全排列,去重,dfs,排序
題目分析,從小到大的順序輸出所有能由這四張卡片組成的4位數,要求很簡單,dfs的排序如果輸入的時候是從小到大的,那麼輸出的就是從小到大的,這裡使用了函式來全排列,如果不會dfs最好自己寫,根據寒假培訓的時候的例子
注意:

  • 排除0開頭的組合
  • 什麼時候需要多加一個換行
  • 輸出的時候需要根據情況判斷是不是輸出,輸出的時機

hdu-1718 Rank

雖然是英文題,但是很簡單
這個題目的意思是問該學號在考試中獲得第幾名,當分數相同時並列
把學號當做陣列輸入即可,不長,但是需要用long long,這裡採用的是倒序,用100減去分數,越小的分數越高,所以只需要一個數組記錄人數,下表為1-100,記錄分數,值為人數,只需要把此人的前的a陣列和加起來,然後加1就是此人的排名
注意:

  • 用long long
  • 記錄這個人的學號
  • 排名需要到自己,前面人數加1

那啥,寫java版本的不用謝,記得一箱辣條。