最多的战斗力

小明玩网络游戏,现在总共有n个天赋点,需要分配给m项技能(0..i...m),其中第项技能所需的天赋点为ai,能够增加ei的战斗力。

若是每项技能仅允许被加点一次,请问小明使用这n个天赋点,能够增加的最多的战斗力是? 输入格式: 第一行输入两个数字n和m,以空格间隔 (1<=n,m<=1000)之后m行依次输出第i项技能所需要的天赋

数和能够增加的战斗力,以空格间隔

输出格式: 输出小明增加的最多的战斗力 (1<=ai,ei<=1000)

输入样例1:

8 3

12 6

11 8

6 8

输入样例2:

6 3

2 10

4 5

1 4

输出样例1:

8

输出样例2:

15

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>

int a[1000],e[1000],vis[1000],res=0;
void dfs(int n,int m,int value,int k){
    if(n<0) return;
    if(k>=m||n==0){
        res=max(res,value);
        return;
    }
    for(int i=0;i<n;i++){
        if(!vis[i]){
            vis[i]=1;
            dfs(n-a[i],m,value+e[i],i+1);
            vis[i]=0;
        }
    }
}

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<m;i++){
        cin>>a[i]>>e[i];
    }
    dfs(n,m,0,0);
    cout<<res;
    return 0;
}



posted @ 2023-10-13 21:24  Maxwell·  阅读(27)  评论(0编辑  收藏  举报