(本部落格旨在個人總結回顧)
題目描述:
輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印1、2、3一直到最大的3位數即999。
解題思路:
看似特別簡單的題目,越是面試官挖坑給你跳。因為題目的解法真的特別簡單,根本就沒有面試的需要。
一般這樣看似簡單的問題,但沒有規定數字範圍,往往就是考大數問題,大數問題一般可用字元解決。
解法一:(使用字串模擬加法)
#include "stdafx.h"
#include using namespace std;
/* * @name incrementstr
* @brief 以字串表示的數字加1(字串逆序存放數字)
* @return bool
*/bool incrementstr(char* strnumber, int n)
int nlength = n;
int nindex = 0;
bool bnextaddone = true;//下一位是否加1
while (bnextaddone)
}else if (strnumber[nindex] < '9' && strnumber[nindex] >= '0')
else
}
return true;}/*
* @name printreversestr
* @brief 反向列印字串
* @param [in] const char * const str
* @return void
*/void printreversestr(const char* const str)
int nlength = strlen(str) - 1;
while (nlength >= 0)
cout << endl;}/*
* @name printmaxofndigits
* @brief 從1列印到最大n位數。
* @param [in] int n
* @return bool
*/bool printmaxofndigits(int n)
char *strnumber = new char[n+1];
memset(strnumber, '\0', n + 1);
while (incrementstr(strnumber, n))
return true;
}int _tmain(int argc, _tchar* ar**)
執行結果:
解法二:(遞迴實現數字排列)
#include "stdafx.h"
#include using namespace std;
/* * @name printrecursion
* @brief 遞迴輸出0~9的n位數全排列
* @param [in] char * strnumber 存放排列結果
* @param [in] int nindex 當前修改位數
* @param [in] int n n位數
* @return void
*/void printrecursion(char* strnumber, int nindex, int n)
for (int i = 0; i < 10; i++)
}/** @name printmaxofndigits
* @brief 從1列印到最大n位數。(遞迴實現)
* @param [in] int n
* @return bool
*/bool printmaxofndigitsrecursion(int n)
char *strnumber = new char[n + 1];
memset(strnumber, '0', n);
strnumber[n] = '\0';
printrecursion(strnumber, 0, n);
delete strnumber;
return true;
}int _tmain(int argc, _tchar* ar**)
執行結果:
劍指Offer 第1題
問題 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。暴力法 分析 直接遍歷一遍陣列,即可判斷目標target是否存在。複雜度分析 時間複雜度 o n 2 因...
劍指offer 列印1到最大n位數
面試題12 題目 輸入數字n,按照順序答應出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的三位數即999。對於這道題進行時,咱們會進行一些分析,當你輸入3時,最大的三位數是999,這就是說這個最大的數是9 10 n 1 9 10 n 2 9 10 0。所以在這我想學習c語言的初...
劍指offer 第15 16題
輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 classsolution defnumberof1 self,n write code here count 0 ifn 0 n n 0xffffffff whilen count 1 n n 1 n re...