使用迭代法窮舉1到N位最大的數

2022-05-02 09:03:14 字數 670 閱讀 9538

這是何海濤老師劍指offer上面第12題,這題首先注意不能使用整數int型作為操作物件,因為n很大時明顯會溢位。這種大資料一般都是使用的字串來表示。

直接法就是:1.針對字串的加法,涉及迴圈進製及跳出判斷。

2.對字串的列印輸出,注意列印01是否合法,否則需新增額外判斷。

這題還有乙個思路就是,輸出這些數其實就是乙個n位的全排列。數字的每一位都有0~9這10中可能,這樣每次設定完n位接著迭代的設定n+1位。

void printarray(char *ptr, int

length)

}cout

<

}void exhaustiverecursive(char *ptr, int length, int

n)

for(size_t i=0; i<10; ++i)

}void printnmaxrecursive(int

n)

char *number_array = new

char[n+1

];

for(size_t i =0; i<10; i++)

delete

number_array;

}

view code

上面是自己嘗試的迭代的方法,沒有經過大量的用例測試,僅供參考。

牛頓迭代法 求任意數的開n次方

牛頓迭代法是求開n次方近似解的一種方法,本文參考。假如 x n m 我們需要求x的近似值。感覺和物理做實驗一樣,先通過實驗觀察,再找出對應理論來解釋現象。這個演算法不是推導出來的,是首先通過觀察發現,再來證明推導,哈哈哈 以下結論都是建立在f x 二階可導的情況下成立。牛頓發現隨便找乙個曲線上的a點...

列印從1到最大的n為數

問題舉例 當n為3時,則列印 1 999。實現 void printtomaxofndigits 1 int n int main 上述實現看似可以解決問題,但是如果數字超出了 int甚至超出了long long所能表達的範圍,這樣的話,問題就成了大數問題 大數情況下的 實現 void printn...

17 大數問題 列印1到最大的n位數

1.反轉兩個字串,便於從低位到高位相加和最高位的進製導致和的位數增加 2.對齊兩個字串,即短字串的高位用 0 補齊,便於後面的相加 3.從頭遍歷,把兩個正整數的每一位都相加,並加上進製 4.最高位有進製則補上進製 5.逆序輸出 public static void main string args ...