基础编程题之洗牌
文章目錄
- 題目
- 解題思路
- 代碼
題目
牛客
解題思路
題目看似復雜,但是十分簡單。關鍵就在于搞清左手牌和右手牌如何擺放的問題
根據題目的意思,使用數組保存牌,第一次洗牌完成后結果如下
可以對比洗牌前后,左手牌和右手牌的位置關系為
根據以上敘述,即可寫出代碼,需要注意的是輸入和輸出的格式
代碼
#include <iostream> #include <vector> using namespace std;void shuffle(vector<int>& card,int n,int k) {while(k--){vector<int> temp(card.begin(),card.end());for(int i=0;i<n;i++){card[2*i]=temp[i];//左牌card[2*i+1]=temp[i+n];//右牌}} }int main() {int group;//有幾組數據cin>>group;while(group--){int n;//2*n張牌int k;//洗牌多少次cin>>n>>k;vector<int> card;card.resize(2*n,0);for(int i=0;i<2*n;i++)//賦值{cin>>card[i];}shuffle(card,n,k);for(int i=0;i<2*n;i++){if(i==2*n-1){cout<<card[i]<<endl;}else{cout<<card[i]<<" ";}}}} 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產品紅包拿不停!總結
- 上一篇: Nginx在安装过程经常出现的问题
- 下一篇: 7-1:C++的IO流