初学算法 简单的小例子

算法初学的一些心得

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

一些常用的方法

  • 暴力破解

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

暴力破解

简单来说就是 利用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

这样的图像

思考

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值