技術 試題 總結

來源:互聯網
上載者:User


58同城:

1.10隻老鼠10隻杯檢測1000瓶酒中的毒酒

題目:現有1000瓶葡萄酒,只知道其中有一瓶是毒酒,但不知道是哪瓶,喝一點點毒酒,就會在一周之內發病死亡。試用最少的老鼠在一周時間試出哪瓶酒有毒。

Solution:

1、編號:

給葡萄酒標上數字:1-1000;給老滑鼠上:0-9; 相應給杯標上:0-9; 每隻老鼠配一隻相同編號的杯子。

2、分酒:(根據2進位)

編號為1的葡萄酒分給編號為以下的杯子:0 (2^0 = 1)

編號為2的葡萄酒分給編號為以下的杯子:1 (2^1 = 2)

編號為3的葡萄酒分給編號為以下的杯子:1、0 (2^0 + 2^1 = 3)

。。。。

編號為1000的葡萄酒分給編號為以下的杯子:9、8、7、6、5、2、1、0(2^9 + 2^8 + 2^7 + 2^6 + 2^5 + 2^2 + 2^1 + 2^0 = 1000)

3、試酒:

讓老鼠喝下相同編號的杯子。

4、找毒酒:

找出死掉的老鼠,記下其編號X、Y、Z……。

毒酒應該是編號為:2^X + 2^Y + 2^Z + ……

(轉自:http://blog.csdn.net/juiceda/article/details/7514939)

2.全排列 

public static void main(String[] args) {// TODO Auto-generated method stubString str="abc";char arr[]= str.toCharArray();Permutation p=new Permutation();p.m_permutation(arr, 0);}void m_permutation(char[] arr,int start){if(start>=arr.length-1)System.out.println(arr);else{for(int i=start;i<arr.length;i++){swap(arr,start,i);m_permutation(arr, start+1);swap(arr,start,i);}}}void swap(char []arr,int i,int j){char temp=arr[i];arr[i]=arr[j];arr[j]=temp;}

3.三維數組 

題目:arr[a][b][c],起始地址m,單元空間是n,求arr[x][y][z]地址。

m+n*(x*b*c+y*c+z)。


4.相隔朋友數

有person m[]數組,儲存不同的人;其中,person類包含個人的id,以及他的朋友數組person friends[].求m數組中某兩個人的相隔的最少朋友數N,A和B是朋友,則N=0。

遍曆m[],建立一個無向圖,使是直接朋友的元素相連,再求每對頂點間的最短路徑即可。其中,因為邊的權值非負,可以使用Dijkstra演算法(複雜度:O(N^2).),當然也可以使用Floyd-Warshall演算法(複雜度:O(N^3).)。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.