最基础的穷竭搜索(一)

今日知识点总结

1.三角形面积

边长:a,b,c   q=(a+b+c)/2   面积:s=sqrt(p*(p-a)*(p-b)*(p-c))

2.多组输入

while(scanf("%c",&c)!=EOF)
    {
        getchar();
        printf...............;
    }
    
   **注:多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。**

3.移位运算符<< >>

例如:整数 g = 10
计算:g<<2
结果:40
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,**左移n位就相当于乘以2的n次方。**

4.输入类型

  1. 计算机储存小数取近似值 float/double ,无限靠近但永远不等于
  2. Float 默认小数点后7位
  3. Double小数点13-15位
  4. 对于float double%f%lf
  5. printf %f

最基础的穷竭搜索(一)

1.栈(stack)

push:从栈顶端放入一组数据
pop:从栈顶端取出一组数据
stack::pop 移除顶端数据
stack::top 访问顶端数据
书写代码时 可以用s.push()/ s.top()-----s为声明储存某某类型的栈

2.队列(queue)

与栈一样支持 push、pop 但有所不同
pop: 取出最底端元素
queue::froont访问最底端数据元素
que.pop()/que.front() -----que声明储存某某类型的队列

3.深度优先搜索(DFS)

图的遍历常用方法:深度优先搜索、广度优先搜索

方法:深度优先搜索从最开始的状态出发,遍历所有可能达到的状态。当连接点后遍历过时,退回上一步。(插几张网课ppt)
在这里插入图片描述
例题:
在这里插入图片描述
稠密图适合在邻接矩阵上进行深度遍历 O(n2)
稀疏图适合在邻接表上进行深度遍历 O(n+e)

4.宽度优先搜索(BFS)

方法:宽度优先搜索先搜索出距离初始状态近的状态。从某一结点出发—>访问该节点所有连接点—>依次访问下一连接点的连接点

类似树的层次遍历,算法效率取决于存储结构
邻接矩阵 O(n2)
邻接表 O(n+e)
在这里插入图片描述

例:变种水仙花

题目链接
题意:

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。

例如:

655 = 6 * 55 + 65 * 5

1461 = 1*461 + 14*61 + 146*1

求出 5位数中的所有 Lily Number。

输入描述:

无

输出描述:

一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。

分析:

能构成水仙花的数字的组成方式可以看作 把这个数字依次对10、100、1000、10000取余,余数*商再把每次结果相加,如果和原来的数字相同,则是水仙花数。

代码:

#include"bits/stdc++.h"
using namespace std;
int main(){
	
	for(int i=10000;i<=99999;i++){
		int sum=0,mod=10000,cur=i;
		while(mod/10){
			sum+=(cur/mod)*(cur%mod);
			mod/=10;
		}
		if(sum==i){
			printf("%d ",i);
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值