算法学习笔记,几个简单的Demo
算法初学的一些心得
前言:现在工作也快一年多了,有时间下班回家会学学算法,陆陆续续也接触了一些 貌似我知道的就冒泡排序其他的都不是很了解
最近买了一本书,边学边记录吧!
一些常用的方法
- 暴力破解
下面是我的一些理解 其实也是 程咬金的三板斧 又不对之处欢迎大家指出!
暴力破解
简单来说就是 利用for循环去找出每种情况,需要强大的硬件和运算速度。 最简单快捷的实现方式
假设修正法
就是去假设一些情况通常我们会对一些情况进行逻辑判断比如判断三个书的大小 一般的做法是循环比较或者多个if else 之类的但是有时候程序需要有 易用性 和 可读性
int a=4,b=8,c=2; //如何比较 可以试试这样
int m=0;
if(a>m) m=a;
if(b>m) m=b;
if(c>m) m=c;
printout(m);
--->>>8
通过上面的就是假设m是最大的数这样写的话程序会清晰很多。
还有一个例子:
判断一个书是否是闰年
int year=0; bool isYear=false;
if(year%4==0&&year%100!=0||year%400==0)
{
isYear=true;
}
bool isYear=false; //假设为false
if(year%4==0) isYear=true;
if(year%100==0) isYear=false;
if(year%400==0) isYear=true;
以上代码也是通过假设
常数变异法
相关问题 1 :打印一个金字塔
*
* *
* * *
* * * *
* * * * *
如何实现
先打印 一排* 号 利用两个for循环
for(int i=0;i<5;i++)
{
Console.Write(" ");
}
for(int i=0;i<5;i++)
{
Console.Write("* ");
}
//输出结果 * * * * *
如果要输出四个"* " 就将上面的两个循环改成
for(int i=0;i<6;i++)
{
Console.Write(" ");
}
for(int i=0;i<4;i++)
{
Console.Write("* ");
}
依次类推 一直到打印1个 "*"
上面的数字分别是 5 5 --> 6 4 -->7 3 -->8 2 -->9 1
其中的规律 9-1=8 9-2=7 9-3=6 9-4=5
所以
利用第三个for循环
for(int k=0;k<5;k++)
{
for(int i=0;i<9-k;i++)
{
Console.Write(" ");
}
for(int i=0;i<k+1;i++)
{
Console.Write("* ");
}
}
这样就可以打印出一个简单的图像了,
还有就是可以打印出一个
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
这样的图像
思考
学习算法主要还是平时多积累。有时候一些简单的问题就是想不明白,但是别人一说就觉得不是很难。经常会有这样的情况就是平时思考的少了
算法学习笔记,几个简单的Demo的更多相关文章
- Johnson算法学习笔记
\(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快 ...
- 某科学的PID算法学习笔记
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...
- C / C++算法学习笔记(8)-SHELL排序
原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...
- Manacher算法学习笔记 | LeetCode#5
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
- Johnson 全源最短路径算法学习笔记
Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些 ...
- [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 算法学习笔记——sort 和 qsort 提供的快速排序
这里存放的是笔者在学习算法和数据结构时相关的学习笔记,记录了笔者通过网络和书籍资料中学习到的知识点和技巧,在供自己学习和反思的同时为有需要的人提供一定的思路和帮助. 从排序开始 基本的排序算法包括冒泡 ...
随机推荐
- 学在LINUX下编程(各种情况比较详细)
(from http://www.712100.com/bbs/redirect.php?fid=160&tid=191752&goto=nextnewset) 预备知识 用gcc ...
- WPF全局异常捕获
跟着<WPF专业编程开发指南>这书打的代码的,自己在正式项目中测试通过,可以抓取到全局的异常,用的log4net来记录日志 核心代码: 写在App.xaml.cs中 /// <sum ...
- Web 高效开发必备的 PHP 框架
摘要: 每周为您推送最有价值的开源技术内参! 码云项目推荐 1.项目名称:多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合 ...
- Qt之OpenSSL(有pro文件的路径格式,以及对libeay32和ssleay32的引用)
简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 简述 下载安装 使用 更多参考 下载安装 ...
- 关于Android开发四大组件
文章主要是讲Android开发的四大组件,本文主要分为 文章源自:http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 一.Act ...
- c++类运算符重载遇到的函数形参问题
class A { public: A(int arg1, int arg2); ~A(); A &operator = ( A &other); A operator + ( A & ...
- java高级知识
1. Spring读取配置文件的流程,怎样引入注解? 2. Spring是怎么注入新的java文件的? 3. CAS锁是什么实现机制,在java的哪些包里最常使用?什么情况下会使用CAS锁? 4. 线 ...
- HTML连载14-文字属性补充&简写
一.字体属性(补充) 1.如果设置的字体不存在,那么系统会使用默认的字体来显示宋体. font-family:"瞎写的一个字体"; 2.如果设置的字体不存在,而我们又不想用默认的字 ...
- List集合总结,对比分析ArrayList,Vector,LinkedList
前面已经写了三篇关于Java集合的文章,包括: Java集合 ArrayList原理及使用 再说Java集合,subList之于ArrayList Java集合 LinkedList的原理及使用 关于 ...
- Ruby字符串(2):String方法详细整理
String方法整理 官方手册 类方法 new new(str="") → new_str new(str="", encoding: enc) → new_s ...