題目是

給你一串整數,如880,640,879,980,1024,2840。再給你整數n,代表要多少個整數連在一起看

請依序找出這n整數的最大值。舉例來說n為4,那麼你得到底下的結果:

 

  • 結果1:[880 640 879 980] 1024 2840,最大值980
  • 結果2:880 [640 879 980 1024] 2840,最大值1024
  • 結果3:880 640 [879 980 1024 2840],最大值2840
  • 結果4:880 640 879 [980 1024 2840],最大值2840(錯!)

 

從輸入開始,因為不知道有幾個輸入,所以我用宣告字串

再用空白切割出一個個的字串,再把這些字串轉成整數,這邊要用到sstream的功能

(空白切割在這http://cychss6305.pixnet.net/blog/post/239128768)

這些整數在存進陣列裡,所以要用到vector

一開始就是先在最上面打上

#include <string.h> //為了使用字串相關功能

#include <sstream> //為了空白切割,並且也可以用來轉整數

#include <vector> //為了使用vector陣列

再來宣告

string input;

getline(cin,input);

再加上還有要輸入一個整數

再來是將輸入的字串用空白分割出一個個字串

而迴圈裡面要做的就是把那些切出來的字串轉成整數,再存進陣列,

所以迴圈上面要宣告一個

vector<int>arr;

再來是字串轉整數的作法

假設現在已經切出了一個字串,這個字串會存在token裡

這時,打上這行程式碼

istringstream trash(token);

trash是變數名字,再來是

int n;

trash>>n;

把trash的內容給n,這樣就成功將字串轉成整數了

之後就是把n存進陣列裡

這樣arr就有使用者所輸入每個整數,之後就是按照輸入的另外一個數

來找出幾個排列一起中的最大值

先看看這張圖

當num=4時,而要從位置為3的數,往後找出4個時,明顯只有三個

從這裡知道迴圈的範圍要到哪裡,

當num=4,長度為6,但只能跑到2

for(int i=0;i<=arr.size()-num;i++)

再來是找出每幾個當中的最大值

假設i=0,從最外層的迴圈進來,再用一個迴圈搜尋

i~i+4中哪一個是最大值,之後印出

.

結果

完整程式碼

  1. #include <iostream>  
  2. #include <string.h>  
  3. #include <vector>  
  4. #include <sstream>  
  5. using namespace std;  
  6.   
  7. int main()  
  8. {  
  9.     string input;  
  10.     int num;  
  11.     vector<int>arr;  
  12.     getline(cin,input);  
  13.     cin>>num;  
  14.     istringstream delim(input);  
  15.     string token;  
  16.     while(getline(delim,token,' '))  
  17.     {  
  18.         istringstream trash(token);  
  19.         int n;  
  20.         trash>>n;  
  21.         arr.push_back(n);  
  22.     }  
  23.     for(int i=0;i<=arr.size()-num;i++)  
  24.     {  
  25.         int max=0;  
  26.         for(int j=i;j<i+num;j++)  
  27.         {  
  28.             if(arr[j]>=max)  
  29.                 max=arr[j];  
  30.         }  
  31.         cout<<max<<endl;  
  32.     }  
  33.     return 0;  
  34. }  
  35. 若想閱讀相關文章請關注我的粉絲團

    小資菜鳥向前衝

    https://www.facebook.com/%E5%B0%8F%E8%B3%87%E8%8F%9C%E9%B3%A5%E5%90%91%E5%89%8D%E8%A1%9D-204484273323335/?fref=ts

arrow
arrow
    文章標籤
    程式設計 題目介紹
    全站熱搜

    cychss6305 發表在 痞客邦 留言(0) 人氣()