萌新求对比两份代码的区别
查看原帖
萌新求对比两份代码的区别
326382
Thomas_Cat楼主2020/10/25 17:57

这两份代码一个 70 一个 100 ,区别只在 for 循环的 j 里面,难道就是在循环并且进入之前先判断吗?

//满分代码
#include<iostream>
using namespace std;
const int MAXN=1000001;
//const int MAXN=100001;
int main(){
    int n,flag[MAXN]={0},trans[MAXN],price[MAXN],time[MAXN];
    cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++)
        cin>>trans[i]>>price[i]>>time[i];
    for(int i=1;i<=n;i++){
        if(flag[i]==1) continue;
        sum+=price[i];
        if(trans[i]==0){
            for(int j=i+1;j<=n&&time[j]-time[i]<=45;j++){
                if(flag[j]==0&&trans[j]==1&&price[j]<=price[i]){
                    flag[j]=1;
                    break;
                }
            }
        }
    }
    cout<<sum;
    return 0;
}
//70代码
#include<iostream>
using namespace std;
const int MAXN=1000001;
int main(){
    int n,flag[MAXN]={0},trans[MAXN],price[MAXN],time[MAXN];
    cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++)
        cin>>trans[i]>>price[i]>>time[i];
    for(int i=1;i<=n;i++){
        if(flag[i]==1) continue;
        sum+=price[i];
        if(trans[i]==0&&flag[i]==0){
            for(int j=i+1;j<=n;j++){
                if(flag[j]==0&&trans[j]==1&&price[j]<=price[i]&&time[j]-time[i]<=45){
                    // sum+=price[i];
                    // flag[i]=1;
                    flag[j]=1;
                    break;
                }
            }
        }
    }
    // for(int i=1;i<=n;i++){
    //     if(flag[i]==0){
    //         sum+=price[i];
    //         //cout<<trans[i]<<price[i]<<time[i]<<endl;
    //         flag[i]=1;
    //     }
    // }
    cout<<sum;
    return 0;
}
2020/10/25 17:57
加载中...