7.23 科大讯飞第三题 大佬帮忙看哈对不对

#include <bits\stdc++.h>
using namespace std;
unordered_set<int> ss;
set<vector<int>> vv;
vector<int> v(5,0);
int sum()
{
    int res = 0;
    for (auto n : v)
    {
        res += n;
    }
    return res;
}
void show(vector<int> vf)
{
    for (auto n : vf)
    {
        cout << n << " ";
    }
    cout << endl;
}
void dfs(int a, int b)
{
    //cout << a << " " << b << endl;
    if (b == 5)
    {
        if (a == 3)
        {
            vector<int> temp = v;
            sort(temp.begin(), temp.end(), [](int &a,int &b) {
                return a > b;
                });
            vv.insert(temp);
            ss.insert(sum());
            return;
        }
        dfs(a + 1, a + 2);
        return;
    }
    else
    {
        v[a] += 3;
        dfs(a, b + 1);
        v[a] -= 3;

        v[b] += 3;
        dfs(a, b + 1);
        v[b] -= 3;

        v[a] += 1;
        v[b] += 1;
        dfs(a, b + 1);
        v[a] -= 1;
        v[b] -= 1;
    }
}
int main(void)
{
    dfs(0, 1);
    /*
    for (auto pp : vv) //输出所有排列可能
    {
        show(pp);

    }
    for (auto t : ss) //输出所有得分可能
    {
        cout << t << endl;
    }
    
    
    */
    int n;
    cin >> n;
    vector<int> ff(5);
    for (int i = 0; i < 5; i++)
    {
        cin >> ff[i];
    }
    if (ss.count(n))
    {
        cout << "yes" << " ";
    }
    else
    {
        cout << "no" << " ";
    }
   
    if (vv.count(ff))
    {
        cout << "yes" << endl;
    }
    else
    {
        cout << "no" << endl;
    }
    return 0;
}
#算法题##科大讯飞#
全部评论
具体题目是,有5个队伍,他们两两互相进行比赛,赢了的得3分,输了得0分,平局则各得一分。 现输入一个数值,判断是否是可能出现的总分。 再输入一个排序后的数组,判断是否是可能出现的各组得分情况。 可是我是交卷了才想出来的😭😭😭,关键时刻总拉胯,重开得了
1 回复 分享
发布于 2022-07-23 23:37
给下题目
点赞 回复 分享
发布于 2022-07-23 23:26
我100%但是我用的cpp
点赞 回复 分享
发布于 2022-07-23 22:20

相关推荐

不愿透露姓名的神秘牛友
昨天 11:00
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务