1 基礎演算法題

2022-03-17 04:22:57 字數 2017 閱讀 9499

#includeusing

namespace

std;

void inverse(char*p)

inverse(p + 1

); printf("%c

", *p);

}int

main()

方法:記錄當前最大的,並且判斷當前的是否比這個還大,大則繼續,否則返回false結束

#includeusing

namespace

std;

/*思路:

a為陣列,n為陣列中數字的個數

當陣列的個數大於3個時

首先執行

return fun(a, n - 1) && a[n - 1] > a[n - 2];

判斷陣列是否遞增

若遞增則繼續進行遞迴,直到n=2和n=1時開始執行上面的兩個if語句

*/bool fun(int* a, int

n)

if (n == 2

)

return fun(a, n - 1) && a[n - 1] > a[n - 2];}

intmain()

;

int n = 5

;

if (fun(a, 5) == true

)

else

system(

"pause");

return0;

}

什麼是strcmp?

設這兩個字串為str1,str2,

若str1=str2,則返回零;

若str1

若str1>str2,則返回正數。

#includeusing

namespace

std;

/*思路:

整個函式的原型中得益於「(*str1!='\0')&&(*str1==*str2)」這一句的**,

因為這樣當字元指標指向空,意味著字串已經移動到最後了,比較結束,

此時可以退出迴圈。而如果兩個字串不相等時,則此時函式也可以退出了。

*/void strmp(const

char* str1, const

char*str2)

if ((*str1 - *str2) > 0

)

if ((*str1 - *str2) == 0

)

if ((*str1 - *str2) < 0

)

}int

main()

4、實現子串定位

方法一:

/*

思路: 1、判斷字串是否為空

2、然後將t和s的字元逐漸進行比較

3、不匹配時,執行

i = i - j + 1;

j = 0;

4、最終通過return j == slength ? i - slength : -1;得到結果

*/int findstr(char t,char s,int tlength,int

slength)

int j = 0

;

int i = 0

;

while (i < tlength&&j else

}return j == slength ? i - slength : -1;}

方法二:

int findsubstr(const

char* mainstr,const

char*substr)

while(*mainstr)

mainstr++;

}return -1

;}

複雜度最低。運算最快的方法:

kmp演算法,該演算法會在本欄裡講解

基礎演算法題

1.一百萬富翁遇到一陌生人,陌生人找他談乙個換錢的計畫,計畫如下 我每天給你十萬,而你每天只需要給我一分錢,第二天我仍然給你十萬元,你給我二分錢,第三天我仍然給你十萬,你給我四分錢.你每天給我的錢是前天的兩倍,直到乙個月 30天 百萬富翁很高興,欣然接受拉這個契約.請編寫乙個程式計算這乙個月中陌生人...

演算法基礎題

程式1 題目 古典問題 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?1.程式分析 兔子的規律為數列1,1,2,3,5,8,13,21.程式2 題目 判斷101 200之間有多少個素數,並輸出所有素數。1.程式分析...

演算法基礎1

概念 資料結構 data structure 儲存資料的不同方式 計算機作為一門工程學科,容易理解,做出東西來,比死板的背概念要重要的多。什麼是演算法?針對同乙個問題,不同的解決方法 比如從1到100求和,可以從1到100累加,也可以1 100 乘以50 如何測算演算法的優劣?時間測算 完成同樣的結...