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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

牛客网刷算法题的输入输出(C++)

發(fā)布時(shí)間:2023/12/14 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网刷算法题的输入输出(C++) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

內(nèi)容簡(jiǎn)述
該篇文章將對(duì)牛客網(wǎng)刷題中關(guān)于輸入輸出的一些問題作一個(gè)總結(jié)。每年互聯(lián)網(wǎng)公司的招聘都必不可少會(huì)有算法題,因此平時(shí)很多人都會(huì)去一些刷題網(wǎng)站進(jìn)行刷題來學(xué)習(xí)。這里面用的比較多的刷題網(wǎng)站是leetcode和牛客網(wǎng)。leetcode是一個(gè)專門用來刷算法題的網(wǎng)站,里面的算法題覆蓋面很廣,幾乎各方面的編程都有,包括算法,多線程,數(shù)據(jù)庫等,它的特點(diǎn)是題型多并且都有提供官方解答和網(wǎng)友的解答,可以學(xué)習(xí)得更加方便。在刷算法題時(shí)不必?fù)?dān)心輸入輸出數(shù)據(jù)的問題,因?yàn)槎际翘峁┮粋€(gè)函數(shù)接口,因此練習(xí)者只需要實(shí)現(xiàn)功能就好了。
牛客網(wǎng)是近些年流行起來的一個(gè)招聘網(wǎng)站,當(dā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),可以在線手撕代碼。以上都非常方便大家的學(xué)習(xí)。但是牛客網(wǎng)的刷題系統(tǒng)大部分都是要自己控制輸入輸出的,有輸入輸出的編程就會(huì)出現(xiàn)各種格式問題,(說到底在輸入輸出上出現(xiàn)問題可能還是對(duì)語言基礎(chǔ)掌握不牢),下面就是一些常見的輸入輸出問題(如果leetcode刷習(xí)慣了,估計(jì)會(huì)經(jīng)常采坑)

輸入
幾乎所有的輸入都是數(shù)字或者字符串,根據(jù)數(shù)字和字符串可以將輸入分為幾種情況:
先說數(shù)字(通常給定一組數(shù),或者給定給一個(gè)數(shù)組)
(1)直接輸入一個(gè)數(shù),對(duì)該數(shù)字進(jìn)行一些操作,例如判斷是否是素?cái)?shù),立方根等,這種類型只需要輸入一個(gè)數(shù)即可,可用以下幾種輸入:

int N;//定義一個(gè)輸入變量用于接收系統(tǒng)輸入的數(shù)字 cin>>N;//方式一,直接輸入,再執(zhí)行相應(yīng)操作 while(cin>>N){//方式二,將輸入放在while后面,這種方式推薦大家用,因?yàn)镃++的輸入是流的方式,因此用while來判斷接收是比較常用的方法,不容易出錯(cuò)(一些情況下只能用這種輸入,所以推薦用這種,包括后面的字符串) }

(2)給定一個(gè)數(shù),表示有多少組數(shù)(可能是字符和數(shù)字的組合)

//舉個(gè)例子,輸入一個(gè)數(shù)N表示有多少個(gè)學(xué)生,然后輸入每個(gè)學(xué)生的姓名和學(xué)號(hào),要求按學(xué)號(hào)降序打印每個(gè)學(xué)生的信息,例子如下: //輸入:3 // liming,1410 // zhangsan,1562 // lisi,1355 //輸出: // zhangsan,1562 // liming,1410 // lisi,1355 //對(duì)于上例,輸入一般采用以下的方法 int N;//學(xué)生總數(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;//輸入姓名和學(xué)號(hào)} } //也可以不用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;//輸入姓名和學(xué)號(hào) } //這種方式看似很直觀易懂,但這種方式對(duì)于系統(tǒng)里的測(cè)試用例來說可能不太友好,一般C++的輸入都強(qiáng)調(diào)流的概念,這種方式只能某些情況下可以使用,大家可以自己多刷一刷,就會(huì)發(fā)現(xiàn)這種方式經(jīng)常會(huì)遇到莫名其妙的錯(cuò)誤

(3)可能直接就是要求輸入一組數(shù),并不告知具體的數(shù)量,以(2)的例子為例,如果不告訴你多少個(gè)學(xué)生,你就無法根據(jù)學(xué)生數(shù)量用for循環(huán)輸入了,這時(shí)候用while循環(huán)就可以很好地處理(流的處理模式)

string name;//定義姓名變量 int num;//定義學(xué)號(hào)變量 while(cin>>name>>num){//輸入一組,處理一組student s = {name,num};Input.push_back(s);//用一個(gè)結(jié)構(gòu)體數(shù)組來接收輸入的學(xué)生信息即可//.... }

再說字符(串)(很常見)
(1)給定字符(串),進(jìn)行相關(guān)地處理

//給定字符 char ch; cin>>ch;//方式一 while(cin.get(ch))//方式二 //給定字符串 string input; getline(cin,input);//方式一 cin>>input;//方式二 while(方式一/方式二) //方式三 //還是推薦用方式三的輸入方式,不容易出錯(cuò),字符串的一些題目用方式一和方式二可能會(huì)出錯(cuò)(由于輸入格式的問題)

(2)給定不止一組字符串,告知大小

//舉個(gè)例子,先輸入一個(gè)數(shù)表示有多少個(gè)字符串,再輸入每個(gè)字符串,根據(jù)字符串長(zhǎng)度排序 int N;//定義數(shù)量 string temp;//字符串變量 while(cin>>N){ //輸入數(shù)量vector<string> input; //存儲(chǔ)所有的字符串for(int i=0;i<N;i++){cin>>temp; //輸入字符串input.push_back(temp);//保存} } //下面是另一種不安全的寫法 int N;//定義數(shù)量 cin>>N;//輸入數(shù)量 string temp;//字符串變量 vector<string> input; //存儲(chǔ)所有的字符串 for(int i=0;i<N;i++){cin>>temp; //輸入字符串input.push_back(temp);//保存 } //以該例題為例,可能在本地IDE能得到正確答案,但如果是牛客網(wǎng)系統(tǒng),由于輸入格式的問題,這樣寫編譯會(huì)通過,就是得不到正確答案

(3)輸入一組字符串,不告知大小,仍然以上個(gè)例子舉例,不告訴你有多少字符串,這樣就不能根據(jù)數(shù)量來用for循環(huán)做了,但可以用while循環(huán)處理

string temp;//字符串變量 vector<string> input; //存儲(chǔ)所有的字符串 while(cin>>temp){ //輸入數(shù)量input.push_back(temp);//保存//... }

輸出
C++的輸出cout與輸入cin一樣都是用流來控制的,cin和cout都在iostream這個(gè)頭文件中,命名空間為std,因此使用的時(shí)候都要加上頭文件和命名空間。輸出相對(duì)來說簡(jiǎn)單一些,不會(huì)出現(xiàn)輸入的一些問題,相反,cout輸出有時(shí)候還可以幫助你解決題目,一下列舉一些常見輸出語句:

//輸入一個(gè)數(shù)字再輸出 int num;//定義 cin>>num;//輸入 cout<<num<<endl;//輸出并且換行//輸入一個(gè)字符串再輸出 string input;//定義 cin>>input;//輸入 cout<<input<<endl;//輸出并且換行//輸入輸出多個(gè)數(shù)據(jù) int num1,num2; string s1,s2; cin>>num1>>s1; cin>>num2>>s2; cout<<num1<<s1<<' '<<num2<<s2<<endl;

小結(jié)
牛客網(wǎng)刷題應(yīng)該對(duì)于互聯(lián)網(wǎng)求職者來說必不可少,因?yàn)楹芏喙径加玫倪@個(gè)線上系統(tǒng),因而用到了其刷題的系統(tǒng)。實(shí)際手撕代碼就是一片空白的場(chǎng)景下自己寫頭文件,寫命名空間,寫輸入輸出等,很多人在實(shí)際筆試或者面試時(shí)都吃了輸入輸出的虧,所以這個(gè)還是要平時(shí)多練習(xí),多總結(jié),把一些常見的輸入輸出格式都弄清楚很重要

總結(jié)

以上是生活随笔為你收集整理的牛客网刷算法题的输入输出(C++)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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