今日小练习,写的时候很顺利,样例一遍过,交的时候答案错误,调了一上午都没出来,求助各位大佬
#include<bits/stdc++.h>
using namespace std;
int t,n;
int a[1000];
int ans;
void cross(int step){
int ct=0;
if(step==0)return;
for(int i=1;i<=step;i+=2){
if(i==step){
ct++;
a[ct]=a[i];
}else{
ans+=max(a[i],a[i+1]);
if(step>2){
ct++; ans+=a[ct];
}
}
}
cross(ct);
}
int main(){
cin>>t;
int sum[t];
for(int i=1;i<=t;i++){
cin>>n;
ans=0;
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
cross(n);
sum[i]=ans;
}
for(int i=1;i<=t;i++){
cout<<sum[i];
if(i+1<=t)cout<<endl;
}
return 0;
}
先谢过各位大佬了:-)