祥睿夫子 2024-07-31 20:48 采纳率: 100%
浏览 7
已结题

算法(相关搜索:最大值)

问题描述

img

img

#####思路
对每一个堡垒都进行优惠补给,对比补给堡垒数,得出最大值
具体代码如下:

#include<stdio.h>
int main() 
{ 
    int N,B,i,j;
    long long int p[100000],s[100000];
    scanf("%d %d",&N,&B);
    int count[1000]={0};
    for(i=0;i<N;i++){
        scanf("%lld %lld",&p[i],&s[i]);
        B-=(p[i]/2+s[i]);
        for(j=1;j<N;j++){
            if(B>0){
            B-=(p[j]+s[j]);
            count[i]++;
            }
        } 
    }
    int max=count[0];
    for(i=1;i<N;i++){
        if(count[i]>max){
            max=count[i];
        }
    }
    printf("%d",max);
    return 0; 
}

这里把P数组、S数组范围缩小了,否则会出现“运行错误”问题,具体也不知道怎么解决,在线求解

  • 写回答

1条回答 默认 最新

  • 智者知已应修善业 2024-08-01 10:35
    关注

    N只有10的3次方,数组容量自然不要设置过大,且用二维数组即可,数组过万则要设为公共变量才能大些。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 7月31日