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 }

 

 

猜你喜欢

转载自www.cnblogs.com/m17773572025/p/10049492.html