都是大題,有些智力題,基本是都挺基礎的
1 n條直線最多將平面分成多少個地區
記得初中還是小學就有這種提了
1條 分2個
2條 4
3 7
4 11
規律 f(n) = n+f(n-1)
再累加起來就是f(n)= (1+n)*n/2 +1
2 翻硬幣
有100個硬幣,開始正面朝下,第一次把所有的都變向,第二次把2的倍數變向,第三次3的倍數,以此類推,進行100,問朝上的有多少個
和開關燈的那個題是一樣的,就是考察一個數有多少個因子,這裡就是找因子個數為奇數,為奇數時才會正面朝上,只有完全平方數才有奇數個因子,於是只有十個
和質因子沒什麼關係。
3 給出兩個數的異或與和兩個值能否唯一確定那兩個數是多少
因為異或與和中兩個運算元都滿足交換律,舉個最簡單的例子,一個是0,一個是1,異或等於1,和也等於1,這樣無法確定哪個是0,哪個是1
4 給出二叉樹的後續遍曆和中序遍曆求先序 比較簡單
5 若干個字元求全排列 ,字元中可能有重複
用遞迴就可以,只是在交換字母是判斷是否兩個字元相同,同則跳過
#include<iostream>using namespace std;#include<assert.h>void Permutation(char* pStr, char* pBegin){assert(pStr && pBegin);if(*pBegin == '\0')printf("%s\n",pStr);else{for(char* pCh = pBegin; *pCh != '\0'; pCh++){ if(*pBegin == *pCh) continue;//如果相同則不交換,進行下一輪交換swap(*pBegin,*pCh);Permutation(pStr, pBegin+1);swap(*pBegin,*pCh);}}}
6 括弧匹配問題,還要求把注釋中的,光考慮注釋了,字串忘了http://blog.csdn.net/zhaopeng2511/article/details/6740479隻有括弧匹配,沒有去掉注釋、字串中的我的做法是設定標誌位,如果出現注釋標誌/*,設定標誌位為true也就是裡邊的括弧不要統計,當出現 */標誌位為false繼續統計,引號也類似,只是可能出現轉義的情況,在引號中,如果出現/"這樣的組合忽略,操作起來也不是很複雜。