写在前面:今天上午的河大赛把我给写自闭了,倒不是因为题目有多难,而是我脑子抽了。古风排序写出来了,简单的没写出来。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 }