当前位置: 首页 > news >正文

思维训练(算法+技巧)

1.深度优先搜索:暴力求解,适合判断能不能走出迷宫

      利用递归,有一个check【】数组来检查该节点是否经过

        for循环该节点的邻接节点(存在且没被访问),递归DFS(该节点的某个邻接节点)

DFS(初始顶点v,图...)

check[v] = 访问;

for(int i=0;i<n;i++){

if(邻接节点存在&&check【i】==未访问)

        DFS(邻接点)

}

2.广度优先搜索:适合找最短路径,最短走出迷宫

有一个check【】数组来检查该节点是否经过

利用队列,当前节点被访问,它的邻接节点加入队列

BFS(接受初始顶点v,图)

{

访问v;

check[v] = 访问;

Queue.push(v)

while(queue不为空)

{

        Queue.pop(v);

        遍历v的邻接结点for(i.....)

                                {

                                        if(邻接节点存在且未访问)

                                        {

                                                访问该节点;

                                                check【i】 = 访问;

                                                i入队

                                        }

                                }

}

}

3.对于一个数字,题目关于它的位数操作,可以用while循环配上%(取模),/(除法)来逐步减位数,进行操作

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>> n;
    int sum=0;
    for(int i=1;i<n+1;i++)
    {
        int x=i;
        while(x>0)
        {
            int ge = x%10;
            x/=10;
            if((ge==2)||(ge==0)||(ge==1)||(ge==9))
            {
                sum+=i;   
                break;
            }
        }
    }

    cout<< sum;
    return 0;
}

4.对于某组数字判断其是否包含某些数字,可以将该组数字排序,然后寻找

#include<bits/stdc++.h>
using namespace std;
//某人年龄立方是4位数,四次方是6位数,并且这10个数字包含了0-9,求这个年龄
bool panduan(long long cube,long long forth)
{
    string s = to_string(cube)+to_string(forth);
    //满足10个数字
    if(s.size()==10)
    {
        //对这个字符串排序
        sort(s.begin(),s.end());
        for(int j=0;j<10;j++)
        {
            if(s[j] !='0'+j)
            return false;
        }
    }
    return true;
}
int main()
{
    //估算出年龄在10-30之间
    for(int i=10;i<30;i++)
    {
        long long cube = (i*i*i);
        long long forth = (i*i*i*i);
        int flag = false;
        //满足位数条件
        if((cube)>1000&&(cube)<10000&& (forth)>100000 && forth<1000000)
        {
            if(panduan(cube,forth)==true)
                cout<<"年龄是:"<< i;
        }
    }

    return 0;
}

相关文章:

  • 大白话TypeScript第八章TypeScript 项目的部署与监控
  • Kafka零拷贝
  • springcloud组件调用顺序
  • 游戏引擎学习第128天
  • 1-3压缩命令
  • 内存中的缓存区
  • 数据结构:二叉搜索树(排序树)
  • 介绍一款飞算JavaAI编程工具,集成到idea,图文并茂
  • AcWing 5933:爬楼梯 ← 递归 / 递推 / 高精度
  • Vue 安装 wangEditor 富文本编辑器
  • 【Redis】Mac系统一键安装redis
  • Python基于Django和人脸识别的在线票务系统设计与实现
  • Java进阶——注解一文全懂
  • MR-图解
  • 学生考勤请假管理系统
  • ai说话人分离 | 基于语音大模型进行说话人拆分
  • 【精华】为什么class在前端开发中不常用?
  • 【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置)
  • 【C++】Rusage(一)
  • 广义线性模型下的数据分析(R语言)
  • 自己做的网站页面错误/沈阳关键词优化费用
  • 微博网站开发平台/广告联盟论坛
  • 禅城技术支持骏域网站建设/百度做网站需要多少钱
  • 怎么编网站/阿里巴巴国际贸易网站
  • 做响应式网站的菜单/网络营销案例分析ppt
  • 网站未续费到期后打开会怎样/正规的网店培训机构有哪些