Java面試題及其答案

2021-09-25 01:18:18 字數 2296 閱讀 6392

1.乙個圓劃分為n個扇形,現用m種顏色對其上色,要求相鄰兩塊扇形的顏色不能相同,問有多少種上色方案?(其中n>=1,m>=3) 

注意:不考慮對稱性,例如:乙個圓劃分為2個扇形,用3種顏色上色方案有「黑紅,黑白,白紅,白黑,紅白,紅黑」6種,相當於每個扇形都有編號,是不一樣的。

採用數學歸納的思想。求n個扇形的上色方案,相當於在n-1個扇形中插入乙個扇形,這時只需考慮兩種情況: 

- 1、第1個扇形和第n-1個扇形顏色不一樣,這有s(n-1)種情況,此時插入的扇形n有m-2種顏色選擇; 

- 2、第1個扇形和第n-1個扇形顏色一樣(n>3),這有s(n-2)種情況,此時插入的扇形n有m-1種顏色選擇。 

- 3、 如果旁邊兩塊顏色不同 那麼是color(n-1,m),那麼第n塊有m-2種顏色,有color(n-1,m)*(m-2)種可能; 

- 4、如果旁邊兩塊顏色相同 那麼是color(n-2,m)(相當於可以隨便去掉第n塊旁邊的一塊不影響討論),那麼第n塊有m-1種顏色,有color(n-2,m)*(m-1)種可能; 

**:s(1) = m;

s(2) = m(m-1);

s(3) = m(m-1)(m-2);

s(n) = s(n-1)*(m-2)+s(n-2)*(m-1);

public class circlecolor  

/**  

* * @param n 扇形數  

* @param m 顏色數量  

* @return  

*/  

public static int color(int n,int m)  

if (n==2)  

if (n==3)else  

}  }

2.輸入乙個字串,列印字串的全部排列

/*** 不考慮有重複元素的全排列

* * 基本思想是從頭到尾依次選取元素,與第乙個元素交換,交換之後,遞迴地對第乙個元素之後的字元陣列進行遞迴操作。

*/public class stringpermutation

system.out.println();

}for (int i = start; i <= end; i++)

}private static void swap(char str, int i, int first)

public static void main(string args)

}/**

* 考慮有重複元素的全排列

* * 基本思想是從頭到尾依次選取元素,與第乙個元素交換,交換之後,遞迴地對第乙個元素之後的字元陣列進行遞迴操作。

* * 如果後面有重複出現的元素,則這個元素只交換一次,換句話說,如果要交換start和i,則要求[str[start],str[i])裡沒有與str[i]相同的元素(如果有相同,說明之前已經交換過,這次就不需要交換了)

*/public class stringpermutation

system.out.println();

}for (int i = start; i <= end; i++) }}

private static void swap(char str, int i, int first)

private static boolean isswap(char str, int start, int toswap)

return true;

}public static void main(string args)

}3.在乙個字串中找到第乙個只出現一次的字元。如輸入abaccdeff,則輸出b.

public class test_1 {

public static void main(string args) {

string str = "baccdde";

system.out.println(findfirstnotrepeat(str));

public static char findfirstnotrepeat(string str){

if(str == null){

system.out.println("輸入為空!");

return ' ';

int hash = new int[256];

//初始化hash陣列

for(int i =0;ihash[i]=0;

for(int i =0;ihash[str.charat(i)] ++;

for(int i=0;iif(hash[str.charat(i)] == 1)

return str.charat(i);

return ' ';

Python高頻面試題及其答案

命名空間和作用域的關係 命名空間定義了在某個作用域內變數名和繫結值之間的對應關係,命名空間是鍵值對的集合,變數名與值是一一對應關係。作用域定義了命名空間中的變數能夠在多大範圍內起作用。裝飾器函式的作用?寫乙個裝飾器程式 在不修改原函式及其呼叫方式的情況下對原函式功能進行擴充套件 defouter f...

JAVA面試題總匯 含答案

6.以下 有什麼問題?stl易 typedef vector intarray intarray array array.push back 1 array.push back 2 array.push back 2 array.push back 3 刪除array陣列中所有的2 for inta...

廣州某公司面試題及其答案

描述一下漸進增強和優雅降級 漸進增強 針對低版本瀏覽器進行構建頁面,保證最基本的功能,然後再針對高階瀏覽器進行效果 互動等改進和追加功能達到更好的使用者體驗。從被所有瀏覽器支援的基本功能開始,逐步地新增那些只有新式瀏覽器才支援的功能,向頁面新增無害於基礎瀏覽器的額外樣式和功能。當瀏覽器支援時,它們會...