題目是http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=18033
Problem 3. 頑皮的比爾
成績: 0 / 倒扣: 0.8
這題一開始要求先輸入幾筆測資,再來不知道要翻轉幾次,所以用字串輸入
再切割字串,並轉成整數,存到陣列裡,但是因為最後由0決定結束,
所以轉成整數之後如果是0,就不要存進陣列裡
再來是根據陣列中第一個位置的值,也是有幾個煎餅
用迴圈把數字放進一個新的陣列
arr中第一個是幾個煎餅,之後的位置存的值就是要從第幾個位置把煎餅堆翻轉
就是把cak這個陣列不停的翻轉
而翻轉就要用到
C++中#include <algorithm>裡的reverse
寫法是reverse(起始位置,結束位置);
這樣就能把把起始位置到結束位置之間的元素整個翻轉過來
最後再把,翻轉之後的結果印出就好了
全部程式碼
- #include <iostream>
- #include <vector>
- #include <string.h>
- #include <sstream>
- #include<algorithm>
- using namespace std;
- int main()
- {
- int num;
- cin>>num;
- cin.get();
- for(int i=0;i<num;i++)
- {
- vector<int>arr;
- string input;
- getline(cin,input);
- istringstream delim(input);
- string token;
- while(getline(delim,token,' '))
- {
- int trash;
- istringstream is(token);
- is>>trash;
- if(trash!=0)
- arr.push_back(trash);
- }
- vector<int>cak;
- for(int j=1;j<=arr[0];j++)
- {
- cak.push_back(j);
- }
- for(int j=1;j<arr.size();j++)
- {
- reverse(cak.begin(),cak.begin()+arr[j]);
- }
- for(int j=0;j<cak.size();j++)
- {
- if(j!=cak.size()-1)
- cout<<cak[j]<<" ";
- else
- cout<<cak[j]<<endl;
- }
- }
- }
若想閱讀相關文章請關注我的粉絲團
小資菜鳥向前衝
文章標籤
全站熱搜
留言列表