算法
嵌入式工程师001
学无止境
展开
-
约瑟夫问题 C++
#include <iostream>using namespace std;int main(){ int a[11] = {0}; //0表示在圈内 int n,m; cout << "请输入人数,出圈数字 " << endl; cin >> n >> m; //n个人玩游戏,玩到m时出圈 int pop=0,c=0,k=0; //pop出圈 while(pop != n) //当还有.原创 2021-09-15 17:15:37 · 139 阅读 · 0 评论 -
计算字符串中字串出现的次数,求次大值(详解)
1.int Search(char *str,char *substr){ //请实现}#include <stdio.h>#include <string.h>int main(){ char * str = "niaiwowoainitianmimi"; char * substr = "ai"; int n; int count = 0; n = strlen(substr); while(...原创 2021-09-11 22:26:36 · 133 阅读 · 0 评论 -
单向链表反向(头结点没有值)
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode *p,*q; //p指向头结点的下一个结点 p=pHead->next; .原创 2021-09-11 21:00:11 · 176 阅读 · 0 评论 -
1.斐文那契数列-兔生兔问题 2.分数递归 3.递归求和4.递归排序
1.斐文数列#include <stdio.h>int fib(int n){ if(n==1 || n==2) { return 1; } else { return (fib(n-1) + fib(n-2)); }}int main(){ int num = fib(10); printf("num = %d\n",num); return 0;}2.分数递归#include <stdio.h>double fun(int原创 2021-09-11 15:00:05 · 182 阅读 · 0 评论 -
用栈实现括号的匹配问题--C/C++
1.要求写出算法,用来判断一个表达式中各种括号(大括号,小括号)是否配对(左右对称)出现?#include <iostream>#include <stack>#include <string>using namespace std;int main(){ //用栈实现左右括号匹配问题 string str1 = "((([[]]))[)"; stack<char> s; for (int i = 0; i < str1.size原创 2021-09-10 17:39:53 · 1003 阅读 · 0 评论 -
将小写字符串转换为大写字符串-》用C实现(简洁明了)
#include <stdio.h>int main(){ char str[5] = {"HEllo"}; char *p = str; while(*p != '\0') { if(*p >= 'a' && *p <= 'z') { *p = *p - 32; p++; } //如果p指向的字符不是小写字母则继续向后遍历 else { p++; } } //打印 printf(".原创 2021-09-09 22:02:40 · 171 阅读 · 0 评论 -
剑指offer--》C语言进阶面试重点
1.判断下列程序输出什么?int main(){ char arr1[] = "abcdef"; char arr2[] = "abcdef"; char *p1 = "abcdef"; char *p2 = "abcdef"; //判断输出结果 arr1和arr2保存的是字符串的首元素地址,两块独立的内存空间 if(arr1 == arr2) { printf("hehe\n"); } el原创 2021-09-06 14:23:01 · 293 阅读 · 2 评论 -
字符串倒置(指针系列)
#include <stdio.h>#include <string.h>#define M 20int main(){ char str[M] = {'\0'}; //p指针指向字符串首位 char *p = str; char *q = p; printf("请输入字符串\n"); gets(str); //q指针指向字符串最后一位 q = q + strlen(q) - 1; //将q指向的字符串和p指向的字符串交换 while( p &l.原创 2021-09-03 20:24:11 · 925 阅读 · 0 评论 -
十大排序-快速排序(一目了然)
#include <stdio.h>void Quicksort(int a[],int left,int right){ if(left > right) { return ; } int l = left; int r = right; //确定键值,用于比较 int point = a[right]; //(确认键值右边数为键值先从左遍历,相反先从右遍历) while(l < r) { //左向右遍历找到比point大的数 while(l.原创 2021-09-03 10:51:34 · 86 阅读 · 0 评论 -
十大排序-快速排序算法
#include <stdio.h>void Quicksort(int a[],int left,int right){ if(left > right) { return ; } int mid = (left + right) / 2; int l = left; int r = right; int temp = a[right]; a[right] = a[mid]; a[mid] = temp; //键值 int point = a[righ.原创 2021-09-02 20:28:34 · 61 阅读 · 0 评论