演算法筆記1 實現任意長數字相加

2021-09-28 15:35:35 字數 1264 閱讀 3934

思路:模擬加法的進製操作,從後遍歷兩個陣列,設定用於兩個當前陣列位置的標誌位。為了這樣遍歷,需要使用較長的那個字串,作為for迴圈的最大值。當兩個數字長度一致時,可能進製也可能不進製,要分情況討論。

下面是實現**:

@test

public

void

bigaddtest()

/** * 乙個較長的數字加乙個較短的數字

* @param s1

* @param s2

*/private

void

bigadd

(string s1,string s2)

string temstr=s1;

if(s1.

length()

length()

) stringbuilder sb=

newstringbuilder()

;int len1=s1.

length()

-1;int len2=s2.

length()

-1;int extraadd=0;

//記錄進製

for(

int i=len1;i>=-1

;i--

)int num2=0;

if(i-

(len1-len2)

>=0)

int tmpsum=num1+num2+extraadd;

//計算本次的和

if(i==-1

)break;}

extraadd=tmpsum/10;

//計算進製大小

sb.(tmpsum%10)

;}system.out.

println

(sb.

reverse()

.tostring()

);//最後需要把數字逆序一下

}/**

* 檢查是不是數字

* @param str

* @return

*/private

boolean

checkisnumstr

(string str)

else

if(str.

length()

>

1&&str.

charat(0

)=='0')

else}}

return

true

;}

演算法複雜度為o(n).

params引數使用實現任意長的引數

基本實現計算總數 static void main string args test 張三 n console.readkey public static void test string name,int score console.writeline 同學考試總成績為分 name,sum 不宣告...

Bresenham演算法實現任意斜率直線繪製

參考 計算機圖形學 donald.hearn 書中給出了斜率k在0 1之間的推導過程 在k 1時以y方向為單位步長遞增,此時有x y b b d low x x k y k 1 b m x k d upper x k 1 x x k 1 y k 1 b m p k dx d low d upper ...

Python筆記 排序演算法實現(1)

排序是資料結構中常用的方法,現用python實現起泡排序和選擇排序。將被排序的記錄陣列r 1.n 垂直排列,每個記錄r i 看作是重量為r i key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r 凡掃瞄到違反本原則的輕氣泡,就使其向上 飄浮 如此反覆進行,直到最後任何兩個氣泡都是輕者...