牛客-借教室

这道题也是没能全过,没过的测试点都显示超时了。按我现在的水平还找不出哪里可以优化的,看了题解很多都是用了C++的库,就先挂着吧。给学了C没学C++的人参考一下,也希望大佬能够赐教。

 

上代码

#include<stdio.h>

#include<stdlib.h>

struct js

{

  int d,j,t; 

};

int main()

{

    int n,m;

    int* r;

    struct js* jie;

    scanf("%d %d", &n,&m);

    r=malloc(sizeof(int)*n);

    jie=malloc(sizeof(struct js)*m);

    for (int i=0;i<n;i++)

    {

        scanf("%d",&r[i]);

    }

    for(int i=0;i<m;i++)

    {

        scanf("%d %d %d",&jie[i].d,&jie[i].j,&jie[i].t);//d 借用教室数 j借用起始日  t借用截止日

        for(int j=jie[i].j;j<=jie[i].t ;j++)//j用于控制所要借的天数的可借用教室

        {

            if(r[j-1]>=jie[i].d)//注意这个r[j-1],否则会对应错

            {

                r[j-1]-=jie[i].d;

            }

            else

            {

                printf("-1\n");

                printf("%d",i+1);

                return 0;

            }

        }

    }

    printf("0");

     

         

        return 0;

}

 这道题里有个很容易粗心的点,就是可借教室的数组(即r[j-1])那个地方注意要-1才能对应上数组从零开始的计数法则。还有本体中我用了一个双出口的写法(即return 0)让循环次数减少,这里也可以用goto。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值