1. 程式人生 > >CCF CSP認證真題訓練

CCF CSP認證真題訓練

寫在前面:今天上午的河大賽把我給寫自閉了,倒不是因為題目有多難,而是我腦子抽了。古風排序寫出來了,簡單的沒寫出來。3進位制和8進位制之間的相互轉換,按理應該是先把3進位制或8進位制轉成10進位制,再把得到的這個10進位制轉成8進位制和3進位制,可是我直接寫的10進位制轉3進位制和8進位制。。。。我傻逼了。還有就是從一篇.txt字尾的英語文章中找出最長的單詞(可能有多個),我第一思路是把目前遍歷到的最長單詞存入vector,同樣長度也存進去,要是遇到了更長的就把vector清空全部重新存入更長的單詞。這種演算法不僅效率很低,而且我沒有得到正確的輸出。。。。應該先全部存入vector再sort排序的。有時間再把它寫成程式碼吧,現在刷PAT乙級和CCF歷年真題,一個9號考,一個15號考。柿子先捏軟的,好睏啊,寫完第一個睡一會兒。

 

解題思路: 按照題目意思走就行,一般第一題都不會太難,解析見註釋。

100分程式碼:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int n;
 7     int total=0, score=0;    //total為總分,score為每一次跳的得分
 8     bool isVirgin = true;     //用來判斷是不是第一次
 9     while(cin >> n)   //開始一局遊戲
10     {
11 if(n==0) //0表示此次跳躍沒有跳到方塊上(此時遊戲結束) 12 { 13 break; 14 } 15 else //如果跳到了方塊上 16 { 17 if(n == 1) //跳到了方塊上,但沒有跳到方塊的中心則獲得1分 18 { 19 score = 1; 20 total += score; 21 } 22 if
(n == 2) //跳到了方塊中心 23 { 24 if(isVirgin) //本局遊戲第一次跳躍就跳到了方塊中心,則此次得分為2分 25 { 26 score = 2; 27 isVirgin = false; //以後就不是第一次了 28 } 29 else if(score == 1) //若上一次的得分為1,則此次得分為2分 30 { 31 score = 2; 32 } 33 else //連續跳到方塊中心時,此次得分在上一次得分的基礎上加2分 34 { 35 score += 2; 36 } 37 total += score; 38 } 39 } 40 } 41 cout << total << endl; 42 return 0; 43 }