一本通1232 Crossing river 0分求助(样例+手写数据已过)
  • 板块学术版
  • 楼主yljx
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/8/4 14:22
  • 上次更新2023/10/27 17:04:23
查看原帖
一本通1232 Crossing river 0分求助(样例+手写数据已过)
381510
yljx楼主2022/8/4 14:22

今日小练习,写的时候很顺利,样例一遍过,交的时候答案错误,调了一上午都没出来,求助各位大佬

#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){//队列中超过2个数,需要回来1个(区别于只剩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;
}

先谢过各位大佬了:-)

2022/8/4 14:22
加载中...