首页 > 其他分享 >1601 添加运算符 枚举 递归dfs

1601 添加运算符 枚举 递归dfs

时间:2024-10-17 16:32:47浏览次数:10  
标签:return 1601 sum dfs 运算符 int long

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3+10, inf = 0x3f3f3f3f;
int a[N], vis[N];
int n, ans;

// 计算函数:根据运算符i对sum和a[x]进行运算
int cal(int sum, int i, int x) {
    if(i == 1) return sum + a[x]; // 加法
    if(i == 2) return sum - a[x]; // 减法
    if(i == 3) return sum * a[x]; // 乘法
    if(i == 4) return sum / a[x]; // 除法(整除)
}

// 深度优先搜索(DFS)函数:尝试所有可能的运算符组合
void dfs(int x, int sum) {
    // 如果已经使用了4个运算符并且结果等于n,计数加1
    if(sum == n && x == 5) {
        ans++;
        return;
    }
    // 如果使用的运算符超过4个,返回
    if(x > 4) return;

    // 尝试每种运算符
    for(int i = 1; i <= 4; i++) {
        int num = cal(sum, i, x); // 计算当前运算结果
        dfs(x + 1, num); // 递归调用,继续尝试下一个运算符
    }
}

int main() {
    for(int i = 1; i <= 4; i++) cin >> a[i]; // 输入4个小于10的正整数
    cin >> n; // 输入目标值n
    dfs(2, a[1]); // 从第二个数开始进行DFS
    cout << ans; // 输出满足条件的方法数
    return 0;
}

 

标签:return,1601,sum,dfs,运算符,int,long
From: https://www.cnblogs.com/jyssh/p/18472595

相关文章

  • 【大数据技术基础 | 实验三】HDFS实验:部署HDFS
    文章目录一、实验目的二、实验要求三、实验原理(一)分布式文件系统(二)HDFS(三)HDFS基本命令(四)HDFS适用场景四、实验环境五、实验内容和步骤(一)在master服务器上确定存在hadoop安装目录(二)配置集群服务器之间SSH免密登录(三)修改HDFS配置文件(四)启动HDFS(五)通过查看进程的方式验证H......
  • P1880 [NOI1995] 石子合并 区间DP 记忆化DFS模拟DP
    P1880[NOI1995]石子合并诈骗题,看着像贪心,实际上是DP对贪心的hack:6346542如果使用贪心法求最小得分,应该是如下的合并步骤:第一次合并3465422,3合并得分是5第二次合并546545,4合并得分是9第三次合并96545,4合并得分是9......
  • C语言运算符和表达式
    1.C语言赋值运算符实例讲解C使用运算符(operator)来代表算术运算。例如,+运算符可以使它两侧的值加在一起。如果您觉得术语“运算符”听起来比较奇怪,那么请您记住那些东西总得有个名称。与其被称之为“那些东西”或“数学符号”,被称之为“运算符”似乎看起来更专业一些!现在,除......
  • 叉积法判断三点共线+重载运算符
    https://ac.nowcoder.com/acm/contest/92687/G#include<bits/stdc++.h>#defineendl'\n'#defineintlonglong#definelowbit(x)(x&-x)usingnamespacestd;constdoublepi=acos(-1);typedefpair<int,int>pii;piioperator-(piia,......
  • Java基础语法-运算符
    运算符Java语言支持如下运算符:算术运算符:+,-,,/,%,++,--赋值运算符:=关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>(了解!!!)条件运算符:?:扩展赋值运算符:+=,-=,*=,/=//二元运算符inta=10;intb=20;intc=25;intd......
  • JAVA输入输出,运算符
    1.输入输出packagecom.scanner;//1.导包importjava.util.Scanner;publicclassDemo1{publicstaticvoidmain(){print();}//需求:我是一个零基础小白,请帮我写一个程序,可以让用户键盘输入用户名和年龄,然后打印出来。publicstaticvoid......
  • JAVA基础笔记1(变量与运算符+基本数据类型)
    目录一.开发工具1.快捷键常用二.HelloWorld案例:输出:心形三:变量与运算符3.1关键字3.2 标识符(identifier)3.3变量3.30变量的概念:3.31变量类型3.32引用数据类型:   类:class   数组:array   接口:interface   枚举:enum   注解:annotation   ......
  • (nice!!!)(LeetCode) 1884. 鸡蛋掉落-两枚鸡蛋(动态规划 dfs递归和递推 || 数学)
    题目:1884.鸡蛋掉落-两枚鸡蛋方法一:动态规划dp+递归dfs+记忆化搜索。时间复杂度0(n^2)。C++版本:classSolution{public: //状态sta[i]表示:i层找到f所需要的最小操作次数intsta[1010];inttwoEggDrop(intn){ //层数为0时,直接返回0if(n==0......
  • Java运算符
    运算符算术运算符:‘+’‘-’‘*’‘/’‘%’‘++’‘–’inta=2intb=a++;//执行完这行代码后,先给b赋值,在自增intc=++a;//执行完这行代码前,先自增,再给c赋值幂运算doublepow=Math.pow(2,3);//表示2的三次方System.out.println(pow);赋值运算符:=关系运算......
  • Java_运算符
    一、运算符介绍运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。二、算术运算符1.讲解介绍算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。!注意上图中最后一行的字符串相加,结果是:hsped(不会有空格)注意!%公式是:a%b=a-a/b*b......