牛客网刷算法题的输入输出(C++)
內(nèi)容簡述
該篇文章將對牛客網(wǎng)刷題中關于輸入輸出的一些問題作一個總結。每年互聯(lián)網(wǎng)公司的招聘都必不可少會有算法題,因此平時很多人都會去一些刷題網(wǎng)站進行刷題來學習。這里面用的比較多的刷題網(wǎng)站是leetcode和牛客網(wǎng)。leetcode是一個專門用來刷算法題的網(wǎng)站,里面的算法題覆蓋面很廣,幾乎各方面的編程都有,包括算法,多線程,數(shù)據(jù)庫等,它的特點是題型多并且都有提供官方解答和網(wǎng)友的解答,可以學習得更加方便。在刷算法題時不必擔心輸入輸出數(shù)據(jù)的問題,因為都是提供一個函數(shù)接口,因此練習者只需要實現(xiàn)功能就好了。
牛客網(wǎng)是近些年流行起來的一個招聘網(wǎng)站,當下幾乎成為了互聯(lián)網(wǎng)的求職者必不可缺的資源。一方面,牛客網(wǎng)提供了很多公司的官方招聘信息以及內(nèi)推信息(員工發(fā)帖),可以讓大家很方便地查看各大公司招聘信息。另一方面,牛客網(wǎng)提供了更加豐富的刷題系統(tǒng),里面不但有l(wèi)eetcode的題目庫,還有各大公司往年的筆試題,這也為刷題者提供了更寬泛的通道,最后,牛客網(wǎng)還可以在上面發(fā)帖,例如面經(jīng),求職之類的信息。目前,很多公司的線上面試都用了牛客網(wǎng)的系統(tǒng),可以在線手撕代碼。以上都非常方便大家的學習。但是牛客網(wǎng)的刷題系統(tǒng)大部分都是要自己控制輸入輸出的,有輸入輸出的編程就會出現(xiàn)各種格式問題,(說到底在輸入輸出上出現(xiàn)問題可能還是對語言基礎掌握不牢),下面就是一些常見的輸入輸出問題(如果leetcode刷習慣了,估計會經(jīng)常采坑)
輸入
幾乎所有的輸入都是數(shù)字或者字符串,根據(jù)數(shù)字和字符串可以將輸入分為幾種情況:
先說數(shù)字(通常給定一組數(shù),或者給定給一個數(shù)組)
(1)直接輸入一個數(shù),對該數(shù)字進行一些操作,例如判斷是否是素數(shù),立方根等,這種類型只需要輸入一個數(shù)即可,可用以下幾種輸入:
(2)給定一個數(shù),表示有多少組數(shù)(可能是字符和數(shù)字的組合)
//舉個例子,輸入一個數(shù)N表示有多少個學生,然后輸入每個學生的姓名和學號,要求按學號降序打印每個學生的信息,例子如下: //輸入:3 // liming,1410 // zhangsan,1562 // lisi,1355 //輸出: // zhangsan,1562 // liming,1410 // lisi,1355 //對于上例,輸入一般采用以下的方法 int N;//學生總數(shù) while(cin>>N){ //while里面輸入總數(shù),然后在該循環(huán)里面處理for(int i=0;i<N;i++){ //用for循環(huán)輸入N組數(shù)據(jù)cin>>stu[i].name>>stu[i].num;//輸入姓名和學號} } //也可以不用while循環(huán)(不推薦,除非用while不好處理或者處理不了) int N; cin>>N; for(int i=0;i<N;i++){ //用for循環(huán)輸入N組數(shù)據(jù)cin>>stu[i].name>>stu[i].num;//輸入姓名和學號 } //這種方式看似很直觀易懂,但這種方式對于系統(tǒng)里的測試用例來說可能不太友好,一般C++的輸入都強調(diào)流的概念,這種方式只能某些情況下可以使用,大家可以自己多刷一刷,就會發(fā)現(xiàn)這種方式經(jīng)常會遇到莫名其妙的錯誤(3)可能直接就是要求輸入一組數(shù),并不告知具體的數(shù)量,以(2)的例子為例,如果不告訴你多少個學生,你就無法根據(jù)學生數(shù)量用for循環(huán)輸入了,這時候用while循環(huán)就可以很好地處理(流的處理模式)
string name;//定義姓名變量 int num;//定義學號變量 while(cin>>name>>num){//輸入一組,處理一組student s = {name,num};Input.push_back(s);//用一個結構體數(shù)組來接收輸入的學生信息即可//.... }再說字符(串)(很常見)
(1)給定字符(串),進行相關地處理
(2)給定不止一組字符串,告知大小
//舉個例子,先輸入一個數(shù)表示有多少個字符串,再輸入每個字符串,根據(jù)字符串長度排序 int N;//定義數(shù)量 string temp;//字符串變量 while(cin>>N){ //輸入數(shù)量vector<string> input; //存儲所有的字符串for(int i=0;i<N;i++){cin>>temp; //輸入字符串input.push_back(temp);//保存} } //下面是另一種不安全的寫法 int N;//定義數(shù)量 cin>>N;//輸入數(shù)量 string temp;//字符串變量 vector<string> input; //存儲所有的字符串 for(int i=0;i<N;i++){cin>>temp; //輸入字符串input.push_back(temp);//保存 } //以該例題為例,可能在本地IDE能得到正確答案,但如果是牛客網(wǎng)系統(tǒng),由于輸入格式的問題,這樣寫編譯會通過,就是得不到正確答案(3)輸入一組字符串,不告知大小,仍然以上個例子舉例,不告訴你有多少字符串,這樣就不能根據(jù)數(shù)量來用for循環(huán)做了,但可以用while循環(huán)處理
string temp;//字符串變量 vector<string> input; //存儲所有的字符串 while(cin>>temp){ //輸入數(shù)量input.push_back(temp);//保存//... }輸出
C++的輸出cout與輸入cin一樣都是用流來控制的,cin和cout都在iostream這個頭文件中,命名空間為std,因此使用的時候都要加上頭文件和命名空間。輸出相對來說簡單一些,不會出現(xiàn)輸入的一些問題,相反,cout輸出有時候還可以幫助你解決題目,一下列舉一些常見輸出語句:
小結
牛客網(wǎng)刷題應該對于互聯(lián)網(wǎng)求職者來說必不可少,因為很多公司都用的這個線上系統(tǒng),因而用到了其刷題的系統(tǒng)。實際手撕代碼就是一片空白的場景下自己寫頭文件,寫命名空間,寫輸入輸出等,很多人在實際筆試或者面試時都吃了輸入輸出的虧,所以這個還是要平時多練習,多總結,把一些常見的輸入輸出格式都弄清楚很重要
總結
以上是生活随笔為你收集整理的牛客网刷算法题的输入输出(C++)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动化运维那点事
- 下一篇: Turtlebot+ROS Stage仿