資源描述:
《網(wǎng)易有道2017內(nèi)推編程題》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、....?網(wǎng)易有道2017內(nèi)推編程題1[編程題]洗牌22[編程題]構造隊列5學習參考....1[編程題]洗牌洗牌在生活中十分常見,現(xiàn)在需要寫一個程序模擬洗牌的過程。現(xiàn)在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張(上半堆),右手拿著第n+1張到第2n張(下半堆)。接著就開始洗牌的過程,先放下右手的最后一張牌,再放下左手的最后一張牌,接著放下右手的倒數(shù)第二張牌,再放下左手的倒數(shù)第二張牌,直到最后放下左手的第一張牌。接著把牌合并起來就可以了。例如有6張牌,
2、最開始牌的序列是1,2,3,4,5,6。首先分成兩組,左手拿著1,2,3;右手拿著4,5,6。在洗牌過程中按順序放下了6,3,5,2,4,1。把這六張牌再次合成一組牌之后,我們按照從上往下的順序看這組牌,就變成了序列1,4,2,5,3,6。現(xiàn)在給出一個原始牌組,請輸出這副牌洗牌k次之后從上往下的序列。?輸入描述:第一行一個數(shù)T(T≤100),表示數(shù)據(jù)組數(shù)。對于每組數(shù)據(jù),第一行兩個數(shù)n,k(1≤n,k≤100),接下來一行有2n個數(shù)a1,a2,...,a2n(1≤ai≤1000000000)。表示原始牌組從上到下的序列。輸出描述:
3、對于每組數(shù)據(jù),輸出一行,最終的序列。數(shù)字之間用空格隔開,不要在行末輸出多余的空格。輸入例子1:33112345632123456221111學習參考....輸出例子1:14253615432611111.#include2.#include3.#include4.#include5.usingnamespacestd;6.constintN=1005;7.intn,k,a[N],b[N];8.9.intmain(){10.intt;scanf("%d
4、",&t);11.while(t--){12.scanf("%d%d",&n,&k);n*=2;13.for(inti=1;i<=n;i++)14.scanf("%d",&a[i]);15.while(k--){16.for(inti=1;i<=n;i++)17.b[i]=a[i];18.for(inti=1,j=n/2+1;i<=n/2;i++,j++){19.a[2*i-1]=b[i];20.a[2*i]=b[j];21.}22.}學習參考....1.for(inti=1;i<=n;i++){2.printf("%d%c",
5、a[i],""[i==n]);3.}4.}5.return0;6.}importjava.util.Scanner;??/**?*每次讀取一個數(shù)之后,算出他經(jīng)過k次洗牌后的位置,只用一個長度為2n數(shù)組用來輸出?*根據(jù)當前數(shù)的位置,可以算出經(jīng)過一次洗牌后的位置?*如果當前數(shù)小于等于n(即在左手),則他下次出現(xiàn)的位置是2*當前位置-1?*如果當前位置大于n(即在右手),則他下次出現(xiàn)的位置是2*(當前位置-n)?*個人建議在線面試題的時候如果5分鐘內(nèi)沒想到好方法建議就使用暴力方法,?*畢竟測試用例不通過什么都沒用?*Created
6、bylizoon2016/8/20.?*/publicclassMain{????publicstaticvoidmain(String[]args){??????Scannersc=?newScanner(System.in);??????intgroups=sc.nextInt();??????while(groups-->?0){????????intn=sc.nextInt();????????intk=sc.nextInt();????????int[]res=?newint[2*n];????????for(inti
7、=0;i<2*n;i++){??????????inttmp=i+?1;??????????for(intj=?0;j?0)System.out.print(res[0]);???
8、?????for(inti=?1;i2*n;i++){??????????System.out.print(""+res[i]);????????}????????System.out.println();??????}????}}2[編程題]構造隊列小明同