重庆师范大学第一届ACM选拔赛 B-有趣的求和

不一样的食物链

https://ac.nowcoder.com/acm/contest/6840/A

分析

这道题数据范围较小,看题目问题,可确定是一个dfs,每次要么走'-',要么走'+',时间复杂度
大概为O(图片说明 ),可以小剪枝一下,如果当前加上所有的数如果都小于最后一个数,就不用搜了,
或者是减去后面所有数都大于最后的数,也不用再搜下去了

代码

//#pragma GCC optimize(3,"inline","Ofast","fast-math","no-stack-protector","unroll-loops")
//#pragma GCC target("sse","sse2","sse3","sse4","avx","avx2","popcnt")

/*
(写点什么吧...)
*/
#include<bits/stdc++.h>

#define R register
#define ll long long
#define inf INT_MAX

using namespace std;

const int N=22;
const ll mod=1e9+7;

int n,m,las,p;
int a[N],sum[N];
char ans[N];

vector<string>q;

inline void dfs(int now,int tot)
{
    //剪枝
    if(now==n)
    {
        if(tot==las)
        {
            p++;
            string s="";
            for (int i=2;i<=m;i++) s+=ans[i];
            q.push_back(s);
        }
        return ;
    }
    if(tot+sum[m]-sum[now-1]<las) return ;
    if(tot-(sum[m]-sum[now-1])>las) return ;

    ans[now]='-';
    dfs(now+1,tot-a[now]);
    ans[now]='+';
    dfs(now+1,tot+a[now]);
}

int main()
{
    scanf("%d",&n);m=n-1;
    for (int i=1;i<n;i++) scanf("%d",&a[i]);
    scanf("%d",&las);
    for (int i=1;i<=m;i++) sum[i]=sum[i-1]+a[i];

    dfs(2,a[1]);

    printf("%d\n",p);
    for (int i=0;i<p;i++)
        cout<<q[i]<<"\n";

    return 0;
}
全部评论
你好..可以问一下为啥要从2开始搜而不是从1开始吗?谢谢!!
点赞 回复 分享
发布于 2020-08-24 19:43

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
评论
4
1
分享
正在热议
# 25届秋招总结 #
442405次浏览 4511人参与
# 春招别灰心,我们一人来一句鼓励 #
41942次浏览 531人参与
# 阿里云管培生offer #
120231次浏览 2219人参与
# 地方国企笔面经互助 #
7961次浏览 18人参与
# 同bg的你秋招战况如何? #
76670次浏览 561人参与
# 虾皮求职进展汇总 #
115613次浏览 886人参与
# 北方华创开奖 #
107430次浏览 599人参与
# 实习,投递多份简历没人回复怎么办 #
2454658次浏览 34857人参与
# 实习必须要去大厂吗? #
55771次浏览 961人参与
# 提前批简历挂麻了怎么办 #
149901次浏览 1977人参与
# 投递实习岗位前的准备 #
1195935次浏览 18548人参与
# 你投递的公司有几家约面了? #
33205次浏览 188人参与
# 双非本科求职如何逆袭 #
662208次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4753次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157628次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11561次浏览 287人参与
# 发工资后,你做的第一件事是什么 #
12704次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35804次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20126次浏览 240人参与
# 我的上岸简历长这样 #
452016次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39299次浏览 314人参与
# 非技术岗是怎么找实习的 #
155868次浏览 2120人参与
牛客网
牛客企业服务