文章
1
粉丝
250
获赞
0
访问
7.7k
思路都写在注释里了,可以先看注释,再看代码
#include <bits/stdc++.h>
#define maxn 2005int v[maxn];
int mp[maxn][maxn];
int result;int n,m,q;
int u,limit;void dfs(int beg,int limit,int value){
if(value>result)
//这个result是个全局变量,每一条路径进来的时候,都会进行一次比较
//如果某条路径上的value更大,就用这条路径上的value
result=value;
for(int i=1;i<=n;i++){
if(mp[beg][i]<=limit)
//对于每一条路径,都试着进去跑一遍,经过limit-mp[beg][i]后,
//每一条路径的初始上限就各不相同了
dfs(i,limit-mp[beg][i],value+v[i]);
}
}int x,y,z;
int main(){
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++){
scanf("%d",&v[i]);
}memset(mp...
登录后发布评论
暂无评论,来抢沙发