DFS解法
2026-05-24 21:59:07
发布于:广东
5阅读
0回复
0点赞
以下是题解
思想是用DFS暴力搜索每条路径,找出最优解
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
int n,m,ans = 0;
int passage[110],score[N];
//定义基础变量和数组
void dfs(int x,int new_score){
//定义DFS,x是关数,score是分数
if(x >= n + 1){
ans = max(new_score,ans);
//暴力找出最高分数
return;
}else{
for(int i = 1;i <= m;i++){
dfs(x + passage[i],new_score + score[x]);
//暴力去走每条路径
}
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n >> m;
for(int i = 1;i <= m;i++){
cin >> passage[i];
}
for(int i = 1;i <= n;i++){
cin >> score[i];
}
dfs(1,0);
cout << ans;
//输入与输出,ans是答案
return 0;
}
也是十分简单
全部评论 1
英文用豆包找到
5天前 来自 广东
0代码像AI,带其实是我自己写的,用专业英文我感觉代码就很顺眼,所以英文用豆包找了
5天前 来自 广东
0passage 通道、过道
score(动词 / 名词)得分5天前 来自 广东
0







有帮助,赞一个