[程式設計題] 洗牌
洗牌在生活中十分常見,現在需要寫乙個程式模擬洗牌的過程。 現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張(上半堆),右手拿著第n+1張到第2n張(下半堆)。接著就開始洗牌的過程,先放下右手的最後一張牌,再放下左手的最後一張牌,接著放下右手的倒數第二張牌,再放下左手的倒數第二張牌,直到最後放下左手的第一張牌。接著把牌合併起來就可以了。 例如有6張牌,最開始牌的序列是1,2,3,4,5,6。首先分成兩組,左手拿著1,2,3;右手拿著4,5,6。在洗牌過程中按順序放下了6,3,5,2,4,1。把這六張牌再次合成一組牌之後,我們按照從上往下的順序看這組牌,就變成了序列1,4,2,5,3,6。 現在給出乙個原始牌組,請輸出這副牌洗牌k次之後從上往下的序列。
輸入描述:
第一行乙個數t(t ≤ 100),表示資料組數。對於每組資料,第一行兩個數n,k(1 ≤ n,k ≤ 100),接下來一行有2n個數a1,a2,...,a2n(1 ≤ ai ≤ 1000000000)。表示原始牌組從上到下的序列。
輸出描述:
對於每組資料,輸出一行,最終的序列。數字之間用空格隔開,不要在行末輸出多餘的空格。
輸入例子:
33 11 2 3 4 5 6
3 21 2 3 4 5 6
2 21 1 1 1
輸出例子:
1 4 2 5 3 61 5 4 3 2 6
1 1 1 1
// c++.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include using namespace::std;
int main()
while (k--)
} for (int i = 0; i < vec.size() - 1; ++i)
cout << vec[vec.size() - 1] << endl;
} return 0;
}
第二次做:
#include #include using namespace::std ;
int main()
while ( k -- )
}for ( int i = 0; i < vec.size() - 1; ++ i )
cout << vec[vec.size() - 1] << endl ;
}return 0 ;
}
網易有道2017內推程式設計題
1.洗牌 洗牌在生活中十分常見,現在需要寫乙個程式模擬洗牌的過程。現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張 上半堆 右手拿著第n 1張到第2n張 下半堆 接著就開始洗牌的過程,先放下右手的最後一張牌,再放下左手的最...
網易有道2017內推程式設計題
include include include include include include include include include include include include include include accmulate include include setprecision...
網易有道2017內推程式設計題
題目鏈結 水題,暴力就行了 一 洗牌在生活中十分常見,現在需要寫乙個程式模擬洗牌的過程。現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張 上半堆 右手拿著第n 1張到第2n張 下半堆 接著就開始洗牌的過程,先放下右手的最後...