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