日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

13行代码AC_2017年省赛C组蓝桥杯第一题 贪吃蛇长度(考查文件读取)

發(fā)布時間:2024/2/28 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13行代码AC_2017年省赛C组蓝桥杯第一题 贪吃蛇长度(考查文件读取) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

勵志用少的代碼做高效表達


題目描述

±------------------------------------------------+
| |
| H###### #### |
| # # # |
| # # # |
| # #### # # |
| # # # # # |
| ######@### # # |
| # #### # # |
| # # # # # |
| ####@#######@### # # |
| # # # # # |
| T ##### # # # ## |
| # # ### ### ## |
| ################ # # #### |
| # # # # |
| ############## #######@########## |
| # ### |
| ########################### |
±------------------------------------------------+
小明在爺爺?shù)乃饺耸詹仞^里找到一臺老式電腦。居然沒有圖形界面,只能用控制臺編程。
經(jīng)過小明的一陣摸索,神奇地設(shè)計出了控制臺上的貪食蛇游戲。
如上圖,是游戲時畫面截圖。
其中,H表示蛇頭,T表示蛇尾。#表示蛇的身體,@表示身體交叉重疊的地方。
你能說出現(xiàn)在的貪吃蛇長度是多少嗎?
其實,只要數(shù)出#的數(shù)目算1,數(shù)出@的數(shù)目,算2,再加上頭尾各算1就計算好了。
人工數(shù)一下?太累眼睛了,聰明的你為什么不讓計算機幫忙呢?
本題的要求就是: 請?zhí)顚懮蠄D中貪食蛇的長度是多少?
注意:需要提交的是一個整數(shù),不要添加任何多余內(nèi)容(比如說明或注釋)


幾種解法與思考

雖是水題, 但不影響我們從中學(xué)到點什么, 以下面兩個解法為例拓展知識。

解法一: word查詢字符
秉承能不寫代碼就不寫代碼(寫代碼易出錯)的原則,我們可以將貪吃蛇copy到word文檔中, 用word中的替換功能查找#和@出現(xiàn)的次數(shù)。 如圖:


解法二:文件輸入
用fstream中的ifstream做文件輸出, 免除將貪吃蛇copy到代碼中,統(tǒng)一格式的困擾。最后循環(huán)判斷即可。
注意:在進行文件讀取時,需要將代碼與讀取文件放在同一路徑下,比如都放在桌面上。
代碼:

#include<iostream> #include<fstream> using namespace std; int main() {ifstream fin("Snake.txt");char s; int num = 2; //代表頭和尾 while(fin >> s) {if(s == '#') num++;else if(s == '@') num+=2; }cout << num << endl; return 0; }

解法三:常規(guī)方法
直接將貪吃蛇copy到字符串?dāng)?shù)組中, 循環(huán)判斷
注意:直接將貪吃蛇copy進來會報錯, 一種解決辦法是:將所有字符都放在一行里。
另一種解決辦法是:使用續(xù)行符(反斜杠)。
續(xù)行符相關(guān)知識——>傳送門

續(xù)行符代碼示例:

#include<iostream> #include<fstream> using namespace std; int main() {string s = {"\+-------------------------------------------------+\ | |\ | H###### #### |\ | # # # |\ | # # # |\ | # #### # # |\ | # # # # # |\ | ######@### # # |\ | # #### # # |\ | # # # # # |\ | ####@#######@### # # |\ | # # # # # |\ | T ##### # # # ## |\ | # # ### ### ## |\ | ################ # # #### |\ | # # # # |\ | ############## #######@########## |\ | # ### |\ | ########################### |\ +-------------------------------------------------+\"} int num = 2; //代表頭和尾 while(fin >> s) {if(s == '#') num++;else if(s == '@') num+=2; }cout << num << endl; return 0; }

總結(jié)

題目雖小, 但如果我們以優(yōu)化,精進的角度看這道題, 還是有很多可取之處的。
1 對于大量處理輸入數(shù)據(jù)的題目, 可以使用文件輸入的方法,在藍橋杯中應(yīng)用很廣泛。
2 使用續(xù)行符, 可以使代碼可讀性提高
3 藍橋杯重應(yīng)用,靈活使用word、excel等軟件可以避免麻煩的編程


努力只能及格,拼命才能優(yōu)秀! 加油,陌生人!

總結(jié)

以上是生活随笔為你收集整理的13行代码AC_2017年省赛C组蓝桥杯第一题 贪吃蛇长度(考查文件读取)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。