算法初学的一些心得

前言:现在工作也快一年多了,有时间下班回家会学学算法,陆陆续续也接触了一些 貌似我知道的就冒泡排序其他的都不是很了解

最近买了一本书,边学边记录吧!

一些常用的方法

  • 暴力破解

下面是我的一些理解 其实也是 程咬金的三板斧 又不对之处欢迎大家指出!

暴力破解

  1. 简单来说就是 利用for循环去找出每种情况,需要强大的硬件和运算速度。 最简单快捷的实现方式

假设修正法

就是去假设一些情况通常我们会对一些情况进行逻辑判断比如判断三个书的大小 一般的做法是循环比较或者多个if else 之类的但是有时候程序需要有 易用性 和 可读性

  1. int a=4,b=8,c=2; //如何比较 可以试试这样
  2. int m=0;
  3. if(a>m) m=a;
  4. if(b>m) m=b;
  5. if(c>m) m=c;
  6. printout(m);
  7. --->>>8

通过上面的就是假设m是最大的数这样写的话程序会清晰很多。

还有一个例子:

判断一个书是否是闰年

  1. int year=0; bool isYear=false;
  2. if(year%4==0&&year%100!=0||year%400==0)
  3. {
  4. isYear=true;
  5. }
  6. bool isYear=false; //假设为false
  7. if(year%4==0) isYear=true;
  8. if(year%100==0) isYear=false;
  9. if(year%400==0) isYear=true;

以上代码也是通过假设

常数变异法

相关问题 1 :打印一个金字塔

  1. *
  2. * *
  3. * * *
  4. * * * *
  5. * * * * *
  6. 如何实现
  7. 先打印 一排* 利用两个for循环
  8. for(int i=0;i<5;i++)
  9. {
  10. Console.Write(" ");
  11. }
  12. for(int i=0;i<5;i++)
  13. {
  14. Console.Write("* ");
  15. }
  16. //输出结果 * * * * *
  17. 如果要输出四个"* " 就将上面的两个循环改成
  18. for(int i=0;i<6;i++)
  19. {
  20. Console.Write(" ");
  21. }
  22. for(int i=0;i<4;i++)
  23. {
  24. Console.Write("* ");
  25. }
  26. 依次类推 一直到打印1 "*"
  27. 上面的数字分别是 5 5 --> 6 4 -->7 3 -->8 2 -->9 1
  28. 其中的规律 9-1=8 9-2=7 9-3=6 9-4=5
  29. 所以
  30. 利用第三个for循环
  31. for(int k=0;k<5;k++)
  32. {
  33. for(int i=0;i<9-k;i++)
  34. {
  35. Console.Write(" ");
  36. }
  37. for(int i=0;i<k+1;i++)
  38. {
  39. Console.Write("* ");
  40. }
  41. }

这样就可以打印出一个简单的图像了,

还有就是可以打印出一个

  1. A
  2. A B A
  3. A B C B A
  4. A B C D C B A
  5. A B C D E D C B A

这样的图像

思考

学习算法主要还是平时多积累。有时候一些简单的问题就是想不明白,但是别人一说就觉得不是很难。经常会有这样的情况就是平时思考的少了

算法学习笔记,几个简单的Demo的更多相关文章

  1. Johnson算法学习笔记

    \(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快 ...

  2. 某科学的PID算法学习笔记

    最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...

  3. C / C++算法学习笔记(8)-SHELL排序

    原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...

  4. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  5. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  6. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  7. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

  8. Johnson 全源最短路径算法学习笔记

    Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些 ...

  9. [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  10. 算法学习笔记——sort 和 qsort 提供的快速排序

    这里存放的是笔者在学习算法和数据结构时相关的学习笔记,记录了笔者通过网络和书籍资料中学习到的知识点和技巧,在供自己学习和反思的同时为有需要的人提供一定的思路和帮助. 从排序开始 基本的排序算法包括冒泡 ...

随机推荐

  1. wlan和wifi的区别是什么?

    首先我们简单介绍下WLAN无线上网,其全称是:Wireless Local Area Networks,中文解释为:无线局域网络,是一种利用射频(Radio Frequency RF)技术进行据传输的 ...

  2. 使用百度网盘+Git,把版本控制托管到云端,附精彩评论

    http://www.cnblogs.com/vajoy/p/3929675.html 我试过多个这种双向同步的网盘,在网络状况不好.系统卡顿以及某些程序BUG的情况下,同步会有错乱现象,尤其是多个电 ...

  3. Qt使用windows API获取程序运行时占用内存 good

    使用的是psapi.h中的GetProcessMemoryInfo函数,但是运行到该函数时就强制退出了. 后来,百度到原因是 原来Qt编译时加了-mthread,createprocess时要使的Ha ...

  4. linux下编译qt5.6.0静态库(使用./configure --help来看看都有哪些参数。超详细,有每一个模块的说明。如果改变了安装的目录,需要到安装目录下的bin目录下创建文件qt.conf)(乌合之众)good

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  5. 教你如何在 Visual Studio 2013 上使用 Github

    介绍 我承认越是能将事情变简单的工具我越会更多地使用它.尽管我已经知道了足够的命令来使用Github,但我宁愿它被集成到IDE中.在本教程中,我会告诉你使用Visual Studio 2013如何实现 ...

  6. TopFreeTheme精选免费模板【20130626】

    有一段时间没有发布的模板了,相信很多喜欢新模板的朋友有点焦急了!还好,今天我今天整理了13个最新的模板,主要是WordPress的,另外3个是关于Joomla的模板,他们分别是游戏主题.俱乐部主题以及 ...

  7. Google三驾马车:GFS、MapReduce和Bigtable

    谈到分布式系统,就不得不提Google的三驾马车:Google fs[1],Mapreduce[2],Bigtable[3]. 虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设 ...

  8. Python连载13-shutile模块(续)和zipfile模块

    一.shutil模块(续) 1.函数:upack_archive() (1)用法:解包操作 (2)格式:shutil.unpack_archive("归档文件地址“,”解包之后的地址“) ( ...

  9. 18 HTML标签以及属性全

    基本结构标签: <HTML>,表示该文件为HTML文件 <HEAD>,包含文件的标题,使用的脚本,样式定义等 <TITLE>---</TITLE>,包含 ...

  10. 关于exe4j打包问题

    一.eclipse导出jar Export-->Runnable JAR file 这里有两种情况: 选择 Package required libraries into generated j ...