数据结构与算法
数据结构和算法
灯火阑处
爱生活,爱编程,酷爱计算机,将来要在IT行业大干一番
展开
-
C++ 接雨水,不看后悔系列,解一道高频面试题
这是一道同事讨论过的一道趣味题,综合了比较多的解题思想,其中有二分,递归,分治等思想。闲来抽空实现了下,如有错误请多多指出,或者有优化处请多多指出。逻辑不是很复杂,直接上代码吧。//// main.cpp// 面试题经典//// Created by 于磊 on 2020/5/27.// Copyright © 2020 于磊. All rights reserved.//#include <iostream>#include <algorithm>#.原创 2020-05-28 20:17:40 · 561 阅读 · 1 评论 -
JS/ES-实现合并两个有序数列
js 合并两个有序数组let arr1 = [1,3,59,111];let arr2 = [2,4,5,6,7,8,9,11,55,66,77,88];function mergeList(arr1, arr2) { let len1 = arr1.length - 1 let len2 = arr2.length - 1 let mLen = arr1.le...原创 2020-02-08 22:42:40 · 247 阅读 · 0 评论 -
C语言-将下标为单数的数组a的元素赋值给数组b输出大写的数组b的数组元素
#include<stdio.h>void main(){ char a[100]; char b[100]; gets(a); int i,j; for(i=0;;i++){ if(a[i]=='\0'){ break; }else{ j=2*i; b[i]=a[j];原创 2016-03-01 10:42:11 · 2385 阅读 · 0 评论 -
C语言-输入一个字符串将大写改成小写,小写 改成大写
#include<stdio.h>void main(){ char a[100]; gets(a); int i; for(i=0;;i++){ if(a[i]=='\0') break; if(a[i]>=65 && a[i]<=90){ a[i]+=32; } else if(a[i]>=97 && a[i]<=122){原创 2016-03-01 09:58:44 · 12482 阅读 · 4 评论 -
C语言-递归法寻找数组中最小值
int getMin(int array[], int n) { int val1, val2, val3; if (n == 1) return array[0]; if (n % 2 == 0) { val1 = getMin(array, n / 2); val2 = getMin(array + n / 2, n /...原创 2020-02-25 00:18:54 · 2523 阅读 · 0 评论 -
C语言-谁在说谎
甲:乙说谎 ,乙:丙说谎,丙:甲乙都说谎int main(int argc, const char *argv[]) { int a, b, c; for (a = 0; a <= 1; ++a) { for (b = 0; b <= 1; ++b) { for (c = 0; c <= 1; ++c) { ...原创 2020-02-24 13:23:22 · 1743 阅读 · 1 评论 -
C语言-数字翻译器
输入一个正整数N,输出它的英文表达void translation_C(long b) { long c; if (b <= 19) printf("%s ", data_1[b - 1]); else { c = b / 10; printf("%s ", data_2[c - 2]); c = ...原创 2020-02-24 13:14:07 · 5771 阅读 · 3 评论 -
C语言-数字的全排列
输入一个数字序列{a1,a2,...,an},将该序列进行排列,并输出每一种排列方式。例如:1,3,5.该数列就有6种排列方式。利用递归不难实现#define max 100void Perm(int a[], int n, int s, int r[], int m) { int i, j, k, flag = 0; int b[max]; for (i = 0...原创 2020-02-24 13:09:29 · 1802 阅读 · 0 评论 -
C语言-移数字游戏
将1~8个数随机的填写到该数阵的外层圆圈中,只剩下中间的一个空圆圈。规定每个数字只能按照数阵中的直线从一个圆圈移动到另一个空的圆圈中。通过若干步的移动,要求将该数阵中的数字移动成为图中所示的状态void Print(int m[]) { printf(" [%d]--[%d]--[%d]\n", m[0], m[1], m[2]); printf(" | ...原创 2020-02-20 21:37:00 · 454 阅读 · 0 评论 -
C语言-常胜将军
现在有21根火柴,2人轮流取,每人每次可以取走1~4根,不可多取,也不能不取,谁取最后一根火柴谁输。编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为 常胜将军。int main(int argc, const char *argv[]) { int computer, people, spare = 21; printf("-------------------...原创 2020-02-20 21:28:12 · 841 阅读 · 0 评论 -
C语言-斐波那契数兔子产仔问题
已知一对两个月大的兔子以后每一个月都可以生一对小兔子,而每一对新生的兔子出生两个月后才可以生小兔子(例如:1月份出生,3月份才可以产仔)。一年能繁殖成多少对int Fibonacci(int n, int flag) { if (n == 1 || n == 2) return 1; else return Fibonacci(n - 1...原创 2020-02-20 21:18:13 · 823 阅读 · 0 评论 -
C语言-寻找水仙花数
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3,则153是一个“水仙花数”。求出100~999之间的所有“水仙花数”并输出。int isNarcissus(int digit) { int sum = 0, tmp; tmp = digit; while (tmp > 0) { su...原创 2020-02-17 17:26:58 · 993 阅读 · 0 评论 -
C语言-爱因斯坦的阶梯问题
爱因斯坦曾经提出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩下1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩下4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶 int i = 7; int times = 1000; while ((i % 2 != 1 || i % 3 != 2 || i % 5 ...原创 2020-02-17 16:50:57 · 5420 阅读 · 0 评论 -
C语言-判断回文数字
有这样一类数字,它们顺着看和倒着看都是相同的数,例如121、656、12321。编写判断从键盘接收的数字是否为回文数字int reverse(int i) { int m, j = 0; m = i; while (m) { j = j * 10 + m % 10; m = m / 10; } return j;}i...原创 2020-02-16 23:47:12 · 830 阅读 · 0 评论 -
C语言-百钱买百鸡问题
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题。描述如下:鸡翁一,值五钱;鸡母一值钱三;鸡雏三值钱一;百钱买百鸡。则翁、母、雏各几何?利用数学的方法不能抽象成如下方程组:实现:#include <iostream>int accord(int i, int j, int k) { if (5 * i + 3 * j + k / 3 =...原创 2020-02-16 22:30:50 · 3968 阅读 · 0 评论 -
C语言-三色球问题
有红黄绿三种颜色的球,其中红球3个,黄球3个,绿球6个。现将这12个球混放在一个盒子中,从中任意摸出8个球,编程计算摸出球的各种颜色的搭配代码:#include <iostream>#define RED_BALL_NUM 3#define YELLOW_BALL 3#define GREEN_BALL 6int main(int argc, const cha...原创 2020-02-16 22:14:38 · 5773 阅读 · 0 评论 -
C语言-十进制/二进制数的互相转化
编写一个程序,将输入的十进制数转化为二进制表示。例如:输入十进制数64,输出二进制数表示1000000void deTobi(int a) { int i = 0, stack[10], r, s; do { r = a / 2; s = a % 2; stack[i] = s; ...原创 2020-02-16 14:58:57 · 3361 阅读 · 1 评论 -
二进制运算-位运算、原码、反码、补码
1. 按位与运算符(&)参加运算的两个数,按二进制位进行“与”运算。运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。(负数按补码形式参加按位与运算)即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。例:3 &5即 00000011 & 00000101 = 00000001 ,所以...原创 2020-02-15 22:36:32 · 610 阅读 · 0 评论 -
C++ 数据结构(查找与排序)
冒泡排序 Bubble Sort简明解释通过依次比较、交换相邻的元素大小(按照由小到大的顺序,如果符合这个顺序就不用交换)。1 次这样的循环可以得到一个最大值,n - 1次这样的循环可以排序完毕。属性稳定 时间复杂度O(n²) 交换O(n²) 对即将排序完成的数组进行排序O(n)(但是这种情况下不如插入排序块,请继续看下文)核心概念利用交换,将最大的数冒泡到最后...原创 2020-02-03 01:17:41 · 855 阅读 · 0 评论 -
C语言 冒泡实现将一个字符串按照字典顺序输出
#include<stdio.h>#include<string.h>void main(){ char a[100]; gets(a); int i,j,temp; for(j=0;j<strlen(a);j++){ for (i = 0; i < strlen(a) - 1 - j; i++) { if(原创 2016-03-01 11:06:51 · 7445 阅读 · 4 评论 -
C语言(数据结构) - 链表的基本操作
1,为什么要用到链表数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一。我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费。我们希望构造动态的数组,随时可以调整数组的大小,以满足不原创 2016-08-19 11:28:01 · 1932 阅读 · 0 评论 -
ios 一个正则表达式测试(只可输入中文、字母和数字)
分类:iOS(390)作者同类文章X目录(?)[+]一NSString自带的正则查找替换方法二使用 RegexKitLite三使用 RegexKitframework 框架四常用ICU正则匹配模式文本文件 Text Files网络与URL相关 Network and URL五贪婪匹配与最小匹配六正则表达式书写格式javascript正则表原创 2016-04-14 08:39:23 · 4088 阅读 · 0 评论 -
C语言贪心算法,关于零钱取整问题
算法,贪心算法精简易懂原创 2016-01-13 15:20:37 · 2324 阅读 · 0 评论 -
数据结构基础之单链表
数据结构基础之单链表对单链表的建立,插入,删除,逆序,打印元素做一个小小的总结,不过我不觉得这些东西在具体的工作后到底能发挥什么作用,因为强大的STL已经把这些都做好了,我们只需要明白在什么场合使用哪一个STL就可以了。链表有一个数据域,有一个指针域,它的操作其实就是对指针域的操作,无非是指来指去而已。也许这些能反映出一个人的思维敏捷度,以及扎实的编程基础吧。但是我想说的是这些玩意转载 2015-11-02 19:04:31 · 664 阅读 · 0 评论