算法设计与分析课程记录week4

算法设计与分析课程记录week4

PS:此文章仅作为个人课程期间的学习记录

蛮力法

1. 概述

蛮力法是一种简单直接地解决问题的方法,通常直接基于问题的描述和所涉及的概念定义,找出所有可能的解。然后选择其中的一种或多种解,若该解不可行则试探下一种可能的解。

使用蛮力法通常有如下几种情况:

  • 搜索所有的解空间:问题的解存在于规模不大的解空间中。
  • 搜索所有的路径:这类问题中不同的路径对应不同的解。
  • 直接计算:按照基于问题的描述和所涉及的概念定义,直接进行计算。往往是一些简单的题,不需要算法技巧的。
  • 模拟和仿真:按照求解问题的要求直接模拟或仿真即可。

2. 基本应用

2.1 直接采用蛮力法的一般格式

在直接采用蛮力法设计算法中,主要是使用循环语句和选择语句,循环语句用于穷举所有可能的情况,而选择语句判定当前的条件是否为所求的解。
在这里插入图片描述
 【例4.1】编写一个程序,输出2~1000之间的所有完全数。所谓完全数,是指这样的数,该数的各因子(除该数本身外)之和正好等于该数本身,例如:
   6=1+2+3
   28=1+2+4+7+14
在这里插入图片描述
对应的程序如下:

void main()
{  int m,i,s;
   for (m=2;m<=1000;m++)
   {  s=0;
      for (i=1;i<=m/2;i++)
         if (m%i==0) s+=i;	//i是m的一个因子
      if (m==s)
	  printf("%d ",m);
   }
   printf("\n");
}

3. 递归在蛮力法中的应用

4. 图的深度优先和广度优先遍历

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值