#includeusingnamespace
std;
void inverse(char*p)
inverse(p + 1
); printf("%c
", *p);
}int
main()
方法:記錄當前最大的,並且判斷當前的是否比這個還大,大則繼續,否則返回false結束
#includeusingnamespace
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,則返回正數。
#includeusingnamespace
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(constchar* 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 如何測算演算法的優劣?時間測算 完成同樣的結...