sjjdbxhx 2025-02-17 16:27 采纳率: 26.7%
浏览 13

这个枚举思路为什么不行#include <bits>

训练士兵,分组团和单独练,这个枚举思路为什么不行

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,S;
int ans=0x3f3f3f3f;
int minc=0;
struct bin{
    int p,c;
    bin(int pp,int cc){
        p=pp;
        c=cc;
    }
} ;
vector<bin> a;
void find(){
    for(int i=0;i<n;i++){
        if(a[i].c>minc){
            minc=a[i].c;
        }
    }
}
void dfs(int x){
    if(x>minc){
        return ;
    } 
    int sum=0;
    int sum1=0;
    for(int i=0;i<n;i++){
        if((a[i].c-x)<=0){
            sum1=0;
        }else{
            sum1=a[i].c-x;
        }
        sum=sum+(sum1)*a[i].p;
    }
    sum=sum+S*x;
    ans=min(sum,ans);
    dfs(x+1);
}
int main(){
    cin>>n>>S;
    for(int i=0;i<n;i++){
        int pp,cc;
        cin>>pp>>cc;
        a.push_back(bin(pp,cc));
    }
    find();
    dfs(0);
    cout<<ans;
    return 0;
} 

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2025-02-17 16:27
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解答

    枚举思路是指使用枚举类型来解决问题,但是你的问题中提到的是使用枚举来解决士兵训练的问题,这个枚举思路不行的原因是:

    1. 枚举类型只能用来表示有限的离散值,而士兵训练的问题中涉及到多种不同的训练方式和组合,这个问题无法用枚举类型来解决。
    2. 枚举类型只能用来表示确定的值,而士兵训练的问题中涉及到随机的组合和选择,这个问题需要使用随机算法和数据结构来解决。

    你的代码中使用了 #include <bits/stdc++.h>using namespace std;,这两个语句是C++标准库的头文件和命名空间的声明,但是你的问题中没有涉及到这些语句的使用。

    如果你想使用C++来解决士兵训练的问题,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)算法来遍历所有可能的训练组合,然后选择最优的组合。但是,这个问题需要更多的信息和具体的要求才能给出详细的解决方案。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月17日