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
我100%但是我用的cpp
点赞 回复 分享
发布于 2022-07-23 22:20
给下题目
点赞 回复 分享
发布于 2022-07-23 23:26

相关推荐

拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
评论
2
4
分享
牛客网
牛客企业服务