幸运的袋子 附加动图演示!

幸运的袋子_牛客题霸_牛客网 (nowcoder.com)

厄运的袋子

用到了深度遍历 递归回溯法

这里假设一个例子: 1 1 1 2 2 3 4 5 7 8

因为要确认是否辛运,并且保持这次不幸运,那么下一次不可能辛运,所以需要先排序

虽然排序会减少效率,但此次排序正是为了更好的效率,而排序的 假设

幸运的袋子 附加动图演示!

主要思路:

幸运的袋子 附加动图演示!

幸运的袋子 附加动图演示!

主要思路都在图和动图里了。最后附上代码

#include 
#include
#include
using namespace std;
       //数据          个数      位置      和      积
int summ(vector<int>& x,int n,int pos,int sum,int multi)
{
   int count=0;
   for(int i=pos;i)
   {
       sum+=x[i];
       multi*=x[i];

       if(sum>multi)
       {
          count+=1+summ(x,n,i+1,sum,multi);//如果辛运 就往下一个数加 
       }
       else if(x[i]==1)
       {
           count+=summ(x,n,i+1,sum,multi);//不幸运时 如果是1 不影响结果 需要继续往下加
       }
       else
       {
           break;//不幸运  并且不是1 说明已经结束  因为排序过 这次不幸运 那么接下来可不能幸运
       }

        //结束回退  回退到最开始 然后从第i+1个位置开始 当开头
       sum-=x[i];
       multi/=x[i];

       //因为可能开头下去都是重复的 重复的不影响结果 所以需要找到不同的开头
       while(i1&&x[i]==x[i+1])
       {
           i++;
       }
   }
   return count;
}

int main()
{
     int n;
     cin>>n;
     vector<int> v(n);
     for(int i=0;i)
     {
         cin>>v[i];
     }
     sort(v.begin(),v.end());//排序的目的 是为了提高效率
     cout<0,0,1);
     return 0;
}(v,n,;i++;i++

Original: https://www.cnblogs.com/LonelyMoNan/p/16737585.html
Author: lemon-Breeze
Title: 幸运的袋子 附加动图演示!

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607411/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ES查询区分大小写

    ES查询在默认的情况下是不区分大小写的,在5.0版本之后将 string类型拆分成两种新的数据类型, text用于全文搜索(模糊搜索), keyword用于关键字搜索(精确搜索)。…

    Linux 2023年6月8日
    0101
  • shell脚本

    1、什么是shell 什么是shell ? Shell(外壳) 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言, 又是一种程序设计语…

    Linux 2023年5月27日
    098
  • Springboot集成Redis举例

    依赖包 配置文件(application.properties) 配置文件(RedisConfig.java) import com.fasterxml.jackson.annot…

    Linux 2023年5月28日
    089
  • 6.22(js–>案例应用)

    (练习1)简易计算器: <html lang="en"> <head> <meta charset="UTF-8&quo…

    Linux 2023年6月7日
    0107
  • 【电台谈心】2022罗翔老师回答毕业生的4个问题

    罗翔老师:谢谢这位同学的问题。我回想起自己找工作的经历,其实也是 一地鸡毛。本科毕业的时候,也没有多少招聘会。我只有一个单位,一个单位地去找。少数几家单位让你进去了,聊了聊又觉得你…

    Linux 2023年6月13日
    0107
  • 设计模式——行为型设计模式

    行为型设计模式 针对对象之间的交互 解释器模式 java中用的很。JVM编译的时候就是对我们写的代码进行了解释操作;数据库SQL语句亦是如此 解释器:对语言进行解释,根据不同语义来…

    Linux 2023年6月7日
    0109
  • Golang中字符串、数组、切片排序

    使用Golang的sort包用来排序,包括二分查找等操作。下面通过实例代码来分享下sort包的使用技巧: 使用接口排序: sort.Sort(data Interface) 自定义…

    Linux 2023年6月6日
    0104
  • 内网渗透测试:利用DCOM进行横向渗透——利用ExecuteShellCommand在做远程命令执行

    COM COM即组件对象模型(Component Object Model,COM) ,是基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。COM是…

    Linux 2023年5月28日
    080
  • Git报错 error: cannot spawn more: No such file or directory

    问题原因 error: cannot spawn more: No such file or directory 这个错误意思是不存在more指令,我是windows平台,自然这个…

    Linux 2023年6月6日
    096
  • Canal.adapter报错

    Canal.adapter报错 报错如下: 2021-09-09 15:56:33.669 [Thread-12] ERROR c.a.o.canal.adapter.launch…

    Linux 2023年6月8日
    0100
  • Linux下的SELINUX

    理解Linux下的SELinux 长久以来,每当遇到授权问题或者新安装的主机,我的第一反应是通过 setenforce 0命令禁用SELinux,来减少产生的权限问题,但是这并不是…

    Linux 2023年6月7日
    084
  • Ubuntu下安装IDA pro

    由于IDA pro只能装在32位环境下,如果是64位Ubuntu,需要运行如下命令安装32位的必备库。 sudo dpkg –add-architecture i386 sudo…

    Linux 2023年6月14日
    066
  • Flask的环境配置

    from flask import Flask​ 通过专门的配置文件,读取配置项,适用于配置项较多 settings.py class Config(object):    DEB…

    Linux 2023年6月8日
    094
  • 【持久层框架】- SpringData-JPA

    SpringData – JPA 😄生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学习心得…

    Linux 2023年6月6日
    073
  • bash初始化文件详解

    本文使用的环境: Bash 4.2.46 bash启动时会执行一系列脚本, 具体要执行哪些启动文件, 这和bash的类型有关: 是否为交互式(interactive)的shell,…

    Linux 2023年6月7日
    073
  • 闭包、装饰器

    闭包: 闭包的演变过程: 闭包的概念: “闭包”的本质就是函数的嵌套定义,即在函数内部再定义函数 “闭包”有两种不同的方式,第一种是…

    Linux 2023年6月8日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球