如何将这份代码以非递归形式写出?
这种写法超时挂掉了。。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n,v,maxx=0x3f3f3f3f,n_k,l_k;bool vst[1003];
struct node{int line,w;}a[1001];
bool cmp(node a,node b) {
return a.line<b.line;
}
void dfs(int k,int used,int sw,int l,int r) {
#define s a[k].line
n_k=(r>n?0:r),l_k=(l<1?0:l);
if(n_k) dfs(n_k,used+(a[n_k].line-s)*sw,sw-a[n_k].w,l,r+1);
if(l_k) dfs(l_k,used+(s-a[l_k].line)*sw,sw-a[l_k].w,l-1,r);
if(!n_k&&!l_k) maxx=min(maxx,used);
}
signed main() {
scanf("%d%d",&n,&v);
int sumw=0;
for(int i=1;i<=n;i++) {
scanf("%d%d",&a[i].line,&a[i].w);
sumw+=a[i].w;
}
int l_s=a[v].line;sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++) if(a[i].line==l_s) {v=i;break;}
dfs(v,0,sumw-a[v].w,v-1,v+1);
printf("%d",maxx);
}
帮忙看看感激不尽呀,大佬们