精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

送上今年微軟的一道筆試題

開發 開發工具
這里送上一道微軟的筆試題,大家可能會認為這是一個全排列的問題,但是全排列在問題在于不能很好的知道每個數到底排在第幾位,并且時間上肯定是不能通過的,遞歸的效率大家應該都知道。

這里送上一道微軟的筆試題,具體題目如下:

Time Limit: 10000ms

Case Time Limit: 1000ms

Memory Limit: 256MB

 

Description

Consider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s and 1s.

Write a program to find and output the K-th string according to the dictionary order. If s​uch a string doesn’t exist,

or the input is not valid, please output “Impossible”. For example, if we have two ‘0’s and two ‘1’s,

we will have a set with 6 different strings, {0011, 0101, 0110, 1001, 1010, 1100}, and the 4th string is 1001.

 

Input

The first line of the input file contains a single integer t (1 ≤ t ≤ 10000),

the number of test cases, followed by the input data for each test case.

Each test case is 3 integers separated by blank space: N, M(2 <= N + M <= 33 and N , M >= 0),

K(1 <= K <= 1000000000). N stands for the number of ‘0’s, M stands for the number of ‘1’s,

and K stands for the K-th of string in the set that needs to be printed as output.

 

Output

For each case, print exactly one line. If the string exists, please print it, otherwise print “Impossible”.

 

Sample In

3

2 2 2

2 2 7

4 7 47

Sample Out

0101

Impossible

01010111011

其實說了這么多,意思很簡單,就是輸入N個0,M個1.然后求出由M,N個1,0組成的第K大的數。如果不存在則輸出impossible.

初來乍到的,大家可能會認為這是一個全排列的問題,但是全排列在問題在于不能很好的知道每個數到底排在第幾位,并且時間上肯定是不能通過的,遞歸的效率大家應該都知道。

我們可能會想到另外一種解決方案,直接列舉,從最小的000...1111開始,一直列舉到1111..000然后記錄下當前是否是含N個0,M個1。這種方式是最容易理解的了,但是如果數字比較大,比如17個1,17個0,我們且不說這么大的整數不能保存,就這個時間上也不合算啊,雖然他是線性復雜度,但是這個線性數也太大了點。。。

OK,我接下來又想到了是否可以通過樹的遍歷,想了想被我否了。

終于想到了一種方式,就是通過不斷的交換獲得。我們想到,如果從一個第1大的數變成第2大的數,必然要使這個數增大,那么怎么個增大法?才能使得這兩個數是最接近的,也就是說我們只增加了1,而不是中間還存在很多數呢?

那就是從左到右掃描數據,直到遇到10就交換,并且在該1之前的1要和***位的0交換。好的思路已經完全暴露了,我這里就列舉一個例子。

比如5個1,5個0的情況。

我們保存的格式是1111100000(實際數為0000011111),它是最小的數(輸出的時候倒著輸出,這種結構主要為了理解方便)。***的數是0000011111.(記住,是倒著哈!)

當我們要增加的時候在J=5的時候,出現了0,且j=4時,它為1,這樣就交換他們,j=4之前的1和低位的0交換,這里沒有0就不需要交換了。得到1111010000(實際數為0000101111).

當我們出現0011101100(實際數為0011011100)要使數字增加1應該怎么做呢?顯然,還是J=5時出現了0且j-1=4時為1交換他們,并且j=4之前的1和***位的0開始不斷交換,***我們會得到結果:1100011100.(實際數為00111000011).

Ok,說到這里大家應該就完全懂了,且看算法源代碼:[集思廣益,你們有沒有更好的解決方案?]

  1. //M:0的個數,N,1的個數。K要輸出第幾個數。 
  2. bool test(int N,int M,int K){ 
  3.     if(calculateTotalNum(M+N,M)<K)//若實際上的數少于k,返回false,則輸出impossible 
  4.         return false
  5.     int L=M+N,count=1
  6.     bitset<MaxLength> bit; 
  7.     map<int,bitset<MaxLength>> mapStr; 
  8.     for(int i=0;i<M;i++)//初始話最小數,即0都在最左邊比如0011 
  9.         bit[i]=1
  10.     if(K==1){ 
  11.         print(bit,M+N);//輸出 
  12.         return true
  13.     } 
  14.     int j=0;//表示從低位一直搜索到高位,有沒有遇到01,有的話就不斷交換。 
  15.     while(!isLast(bit,M,N)){//沒有搜索到***一個數字 
  16.         if(j>=M+N-1
  17.             j=0;//已經搜索到***位了,這個時候就需要從0位搜索 
  18.         if(1==bit[j]&&0==bit[j+1]){ 
  19.             int right=j-1,left=0
  20.             //從J的前一個搜素,并且該之前的1全部移動到最左邊 
  21.             while(right>=0&&bit[right]==1&&left<right){ 
  22.                 bool temp=bit[right]; 
  23.                 bit[right]=bit[left]; 
  24.                 bit[left]=temp; 
  25.                 right--,left++; 
  26.             } 
  27.             bit[j]=0;//交換0,1 
  28.             bit[j+1]=1
  29.             count++;//統計是第幾個大的數了 
  30.             if(count==K){ 
  31.                 print(bit,M+N); 
  32.                 return true
  33.             } 
  34.             j=0;//重新回過頭來搜素 
  35.         } 
  36.         else 
  37.             j++; 
  38.     } 
  39.     return true
  40.  
  41. int calculateTotalNum(int N,int M){//組合問題,計算一共多少個數。C(M,N)=A(N,N)/(A(M,M)*A(N-M,N-M)) 
  42.     int result=1
  43.     for(int i=1;i<=N;i++) 
  44.         result*=i; 
  45.     for(int i=1;i<=M;i++) 
  46.         result/=i; 
  47.     for(int i=1;i<=N-M;i++) 
  48.         result/=i; 
  49.     return result; 
  50. bool isLast(bitset<MaxLength> bit,int M,int N){ 
  51.     int i=0
  52.     while(i<N&&0==bit[i]) 
  53.         i++; 
  54.     if(i==N) 
  55.         return true
  56.     else 
  57.         return false
  58. void print(bitset<MaxLength> bit,int N){// 
  59.     for(int i=N-1;i>=0;i--) 
  60.         cout<<bit[i]; 
  61.     cout<<"  "

 附上效果截圖:

 [庸男勿擾] 同學提供了一種其他的解決方式,主要是通過遞歸的判斷當前0,1組合生成的個數與K進行比較。

(保證在不減一個0時,生成的組合總數是大于K的,否則return。)

若當前0的個數減一后,生成的總數要大于K,則輸出0,同時0的個數減一,K,1的個數不變。

若當前0的個數減一后,生成的總數小于K,則輸出1,同時1的個數減一,0的個數不變,K=K-當前總數。

遞歸調用。***能得到結果。

代碼 [庸男勿擾] 已經貼出,在回答留言處!

[有一個問題是,我和庸男勿擾在計算總次數的時候都會有溢出的問題,即使用Long long也會溢出的,大家在計算階乘或者組合問題對溢出解決方案有什么好的建議可以給出嗎?] 

原文鏈接:http://www.cnblogs.com/xiaoyi115/p/3696507.html

責任編輯:林師授 來源: 博客園
相關推薦

2021-05-09 19:42:25

筆試題前端算法

2021-04-30 08:22:36

異步求和函數

2024-10-11 17:09:27

2009-06-22 13:43:00

java算法

2018-03-06 15:30:47

Java面試題

2011-05-23 11:27:32

面試題面試java

2023-02-04 18:24:10

SeataJava業務

2009-08-11 10:12:07

C#算法

2009-08-11 14:59:57

一道面試題C#算法

2012-07-03 09:38:42

前端

2022-04-08 07:52:17

CSS面試題HTML

2009-08-11 15:09:44

一道面試題C#算法

2017-11-21 12:15:27

數據庫面試題SQL

2021-01-26 13:14:14

js前端map

2021-05-31 07:55:44

smartRepeatJavaScript函數

2024-03-18 13:32:11

2023-08-01 08:10:46

內存緩存

2021-10-28 11:40:58

回文鏈表面試題數據結構

2021-03-16 05:44:26

JVM面試題運行時數據

2010-08-11 11:57:02

微軟筆試題微軟筆試題
點贊
收藏

51CTO技術棧公眾號

亚洲天堂第一区| av免费观看久久| xxxxx99| 粉嫩av国产一区二区三区| 亚洲图片欧美视频| 日本一区精品| av 一区二区三区| 性欧美长视频| 久热精品视频在线观看| 国产 中文 字幕 日韩 在线| 素人啪啪色综合| 亚洲丶国产丶欧美一区二区三区| 欧美一区二区三区在线播放 | 亚洲a级在线观看| 在线免费观看毛片| 国产精品不卡| 亚洲日本中文字幕免费在线不卡| 波多野结衣中文字幕在线播放| 亚洲精品福利电影| 亚洲一区免费在线观看| 午夜欧美性电影| 天堂中文在线资源| 国产麻豆精品95视频| 国产mv久久久| 国产91精品一区| 欧美日韩日本国产亚洲在线| 国产一区二区av| 久久精品综合视频| 综合激情网...| 欧美日韩国产区一| 黑鬼大战白妞高潮喷白浆| 久久电影网站| 亚洲女子a中天字幕| 日韩.欧美.亚洲| 欧美一区二区三区激情| 国产一区二区伦理| 成人欧美一区二区三区黑人孕妇 | 欧美日韩黄视频| 欧美日韩中文在线视频| 草美女在线观看| 亚洲免费色视频| 中国一区二区三区| 97超碰人人在线| 日本一区二区免费在线| 欧美日韩一区二区三区在线视频| 手机在线观看免费av| 国产91综合网| 国产91免费视频| 亚洲免费不卡视频| 豆国产96在线|亚洲| 91福利入口| 99国产精品99| 国产精品99久久久久久久vr| 91夜夜未满十八勿入爽爽影院| 一区二区www| 激情小说亚洲一区| 91日本在线观看| va视频在线观看| 东方欧美亚洲色图在线| 国产精品嫩草在线观看| 动漫av一区二区三区| 成人综合婷婷国产精品久久| 国产精品久久久久久久久久直播| 亚洲精品久久久久久久久久| 成人看片黄a免费看在线| 国产一级二级三级精品| 网站黄在线观看| 久久久蜜桃精品| 午夜免费电影一区在线观看| 免费大片黄在线观看视频网站| 国产精品国产三级国产三级人妇| 吴梦梦av在线| 久久大胆人体| 色呦呦国产精品| 亚洲精品视频导航| 精品一区二区三区中文字幕视频| 欧美成人猛片aaaaaaa| 水蜜桃av无码| 成人嫩草影院| 美日韩精品视频免费看| 日韩精品一区二区在线播放| 日韩国产精品91| 亚洲自拍中文字幕| 天天综合永久入口| 国产精品久久久久一区| 日韩极品视频在线观看| 校园春色亚洲色图| 91精品国产综合久久香蕉的特点 | 欧美老女人在线视频| 国产真实的和子乱拍在线观看| 一本一本久久| 91免费国产视频| 性xxxx视频播放免费| 欧美国产日本韩| www.亚洲视频.com| 青青热久免费精品视频在线18| 91精品国产综合久久小美女| 国产伦精品一区二区三区妓女 | 国产美女精品视频免费播放软件| 亚洲国产精品久久久久秋霞不卡| 九九热免费在线| 在线不卡视频| 成人福利视频网| 青青久在线视频| 一区二区在线免费观看| 欧美精品无码一区二区三区| 999国产精品一区| 永久免费看mv网站入口亚洲| 久久久久久久久97| 九一久久久久久| 欧美黄色直播| 黄色成人在线网| 7777精品伊人久久久大香线蕉完整版| 国产黑丝在线观看| 综合av在线| 国产欧美日韩最新| 免费在线黄色网址| 性做久久久久久| 久久久九九九热| 日韩成人a**站| 日本一本a高清免费不卡| 丰满人妻妇伦又伦精品国产 | 国产一级生活片| 韩国欧美一区二区| 亚洲日本精品国产第一区| 亚洲免费福利| 日韩成人性视频| 国产亚洲欧美精品久久久www| 捆绑紧缚一区二区三区视频| 欧美精品一区二区三区四区五区| 免费在线观看av电影| 在线成人av影院| 国产激情av在线| 久久久噜噜噜| 欧美一级爽aaaaa大片| 中老年在线免费视频| 亚洲福利影片在线| 久久精品无码人妻| 成人久久久精品乱码一区二区三区 | 成人综合久久| 国产精品久久77777| 麻豆app在线观看| 日韩欧美国产高清91| 香港三级日本三级| 国产一区二区你懂的| 精品国产一区二区三区日日嗨| 污视频在线免费观看网站| 日韩一区二区在线看片| 加勒比av在线播放| 成人毛片在线观看| 波多野结衣乳巨码无在线| 久草精品视频| 777精品视频| 欧美亚洲日本| 在线看不卡av| 国产小视频你懂的| 国产精品资源在线观看| 九九久久九九久久| 高清精品xnxxcom| 91sa在线看| 国产高清av在线| 欧美日韩一区二区三区四区五区| 可以免费看av的网址| 国产一区二区视频在线播放| 经典三级在线视频| 国产精品毛片久久久| 欧美激情一二区| 欧美一区二区少妇| 欧美日韩中文字幕一区二区| 免费高清在线观看电视| 翔田千里亚洲一二三区| 日韩电影免费观| 一本色道久久88精品综合| 国产成人自拍偷拍| 国产精品美女一区二区| 欧美熟妇另类久久久久久多毛| 影音先锋日韩在线| 黑人巨大精品欧美一区二区小视频 | 日本a在线观看| 国产香蕉久久精品综合网| www.国产视频.com| 亚洲经典自拍| 性高潮久久久久久久久| 538任你躁精品视频网免费| 98精品国产自产在线观看| 国产精品影院在线| 日韩欧美中文一区| 日韩精品一区二区亚洲av| 国产精品欧美一级免费| 天天躁日日躁狠狠躁av麻豆男男 | 免费黄色片在线观看| 欧美无砖砖区免费| 国语对白一区二区| 中文字幕精品一区二区精品绿巨人| 亚洲色图欧美自拍| 免播放器亚洲| 91视频 - 88av| 欧美理论视频| 国产乱子伦精品| 四虎永久精品在线| 欧美综合激情网| fc2ppv国产精品久久| 亚洲人成在线播放| 亚洲免费成人在线| 欧美日韩高清一区二区三区| 黄色片视频网站| 亚洲免费观看在线观看| 丰满少妇高潮一区二区| 国产a区久久久| 亚洲免费999| 久久午夜激情| 波多野结衣综合网| 综合视频在线| 亚洲午夜精品一区二区三区| 影视先锋久久| 精品国产一区二区三区免费| 久久久久久爱| 国产精品自产拍高潮在线观看| 九色porny丨入口在线| 久久亚洲精品一区二区| 精品资源在线看| 亚洲国产日韩欧美综合久久| 国产女人18毛片水真多| 欧美四级电影网| 免费黄色av片| 色域天天综合网| 五月天激情国产综合婷婷婷| 一区二区欧美在线观看| 久草福利资源在线| 国产精品欧美经典| 亚洲精品国产精品国自| 久久久精品免费网站| 中文字幕一区二区久久人妻网站| 国产黄色精品视频| 成人在线短视频| 国产剧情在线观看一区二区| 潘金莲激情呻吟欲求不满视频| 日本欧美一区二区在线观看| 国产一区视频免费观看| 久久一区亚洲| 日韩精品免费播放| 久久久综合网| 国产又粗又长又大的视频| 久久综合激情| 黄色免费网址大全| 久热成人在线视频| 亚洲欧美国产中文| 韩国理伦片一区二区三区在线播放 | zzzwww在线看片免费| 97福利一区二区| 亚洲黄色网址| 国产精品视频1区| 日韩一区二区三免费高清在线观看| 国产精品综合网站| 国产精区一区二区| 国产精品久久久久久久久久直播 | 色偷偷91综合久久噜噜| 日韩伦理在线观看| 欧美老少配视频| 黄色在线观看www| 国产精品91久久久久久| 久久91超碰青草在哪里看| 成人午夜在线观看| 视频一区视频二区欧美| 国产一区二区三区高清视频| 亚洲8888| 亚洲一区不卡在线| 午夜久久黄色| 97av视频在线观看| 欧美96一区二区免费视频| 久久久久久综合网| 成人精品小蝌蚪| 国产成人无码精品久久二区三| 亚洲国产精品av| 欧美日韩中文字幕在线观看| 午夜精品123| 国产天堂第一区| 日韩免费福利电影在线观看| 色猫av在线| 久久精品久久久久电影| www.色在线| 国产精品视频99| 久久狠狠久久| 亚洲免费精品视频| 亚洲国产日本| 15—17女人毛片| www.久久精品| 久久精品国产亚洲AV成人婷婷| 亚洲综合视频在线观看| 日韩精品一区不卡| 日韩女优视频免费观看| 日本精品专区| 久久久久国产视频| 激情久久99| 欧美另类视频在线| 欧美日韩国产探花| 三上悠亚av一区二区三区| av在线一区二区| 国产高清视频免费在线观看| 狠狠做深爱婷婷久久综合一区| 国产一区二区三区中文字幕| 亚洲精品久久久久久下一站| 精品自拍一区| 国产91在线播放| 懂色av一区二区| 日本一区二区三区四区五区六区| 久久免费高清| 久久精品女同亚洲女同13| 亚洲男人的天堂av| 中文字幕 日韩有码| 亚洲精品按摩视频| 污片在线免费观看| 国产欧美 在线欧美| 美女久久久久| 九九爱精品视频| 国产精品夜夜嗨| 国产激情无码一区二区三区| 在线国产电影不卡| 日色在线视频| 久久久久久久久亚洲| 国产精品亚洲欧美一级在线 | 亚洲自拍欧美色图| 久久精品国产大片免费观看| 国产a级一级片| 成人99免费视频| 国产一级久久久| 日韩免费在线观看| 福利在线视频网站| 成人性生交大片免费观看嘿嘿视频| 日韩国产欧美| 美女少妇一区二区| 国产精品午夜电影| 凹凸精品一区二区三区| 一区二区三区亚洲| 亚洲va中文在线播放免费| 茄子视频成人在线观看| 久久一日本道色综合久久| 国产伦精品一区二区三区妓女 | av自拍一区| 乱熟女高潮一区二区在线| 国产精品一区久久久久| 性色av无码久久一区二区三区| 宅男在线国产精品| а√资源新版在线天堂| 91久久久久久久久久| 中文字幕一区二区三区在线视频| 国产又粗又猛又爽又黄| 亚洲精品成人在线| 欧美自拍偷拍一区二区| 国模精品一区二区三区色天香| 国产欧美自拍一区| www.com毛片| 国产女主播在线一区二区| 中文有码在线播放| 久久偷看各类女兵18女厕嘘嘘 | 日韩欧美综合在线| 国产丝袜在线观看视频| 国产精品三区在线| 国产亚洲高清视频| 亚洲日本精品视频| 欧美日韩久久久一区| 国产传媒在线播放| 国产精品久久亚洲7777| 蜜桃视频一区| 操她视频在线观看| 精品久久久久一区| 毛片无码国产| 伊人av成人| 成人做爰69片免费看网站| 欧美精品亚洲精品日韩精品| 亚洲男人天堂视频| 国产精久久一区二区| 9色porny| 国产亚洲1区2区3区| 国产又大又黄又爽| 91超碰中文字幕久久精品| 欧美综合一区| 丰满人妻一区二区三区大胸| 红桃av永久久久| freemovies性欧美| 成人av电影免费| 天堂成人免费av电影一区| 国产美女久久久久久| 亚洲韩国青草视频| 成人精品国产亚洲| 精品无码国产一区二区三区av| 久久久91精品国产一区二区精品 | 欧美性片在线观看| 青青草视频在线视频| 久久午夜电影网| 精品国产av一区二区| 青青精品视频播放| 亚洲欧美伊人| 天堂av网手机版| 亚洲国产小视频在线观看| 欧美男女视频| 精品视频一区二区在线| 亚洲精品美国一| jzzjzzjzz亚洲成熟少妇| 国产精品一区二区三区在线|