基础编程题之洗牌
文章目錄
- 題目
- 解題思路
- 代碼
題目
牛客
解題思路
題目看似復(fù)雜,但是十分簡(jiǎn)單。關(guān)鍵就在于搞清左手牌和右手牌如何擺放的問題
根據(jù)題目的意思,使用數(shù)組保存牌,第一次洗牌完成后結(jié)果如下
可以對(duì)比洗牌前后,左手牌和右手牌的位置關(guān)系為
根據(jù)以上敘述,即可寫出代碼,需要注意的是輸入和輸出的格式
代碼
#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;//有幾組數(shù)據(jù)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ā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
- 上一篇: Nginx在安装过程经常出现的问题
- 下一篇: 7-1:C++的IO流