京东笔试题 小东复习,规划时间

来源:互联网 发布:免费顶级域名2016年 编辑:程序博客网 时间:2024/05/01 09:12

京东笔试题:小东要考试,父亲安排了每天的最短复习时间和最长复习时间,但是小东只有自己的总复习时间,小明要安排这些时间。使得自己每天的复习时间在规定是时间范围内,并且前几天学习时间尽量长
这里写图片描述

这里写图片描述

#include <stdio.h>#include <string.h>int timeOk(int day,int minTime[],int maxTime[],int sumtime,int myTime[day]){    int minall=0;    int maxall=0;   //满足要求的最短时间和最长时间    int i;    for(i=0;i<day;i++){        minall+=minTime[i];        maxall+=maxTime[i];    }    if(minall>sumtime  ||  maxall<sumtime)        return 0;    for(i=0;i<day;i++){        myTime[i]=minTime[i];        sumtime -= minTime[i];        //printf("%d,%d",i,sumtime);    }    i=0;    while(sumtime){        if(sumtime<=(maxTime[i]-minTime[i]) ){            myTime[i]+=sumtime;            sumtime=0;        }        else{            sumtime-=(maxTime[i]-minTime[i]);            myTime[i]+=(maxTime[i]-minTime[i]);        }        i++;    }    return 1;}int main(){    int day,sumtime;    scanf("%d%d",&day,&sumtime);    int minTime[day],maxTime[day],myTime[day];;    int i;    for(i=0;i<day;i++){        scanf("%d %d",&minTime[i],&maxTime[i]);    }    int ok;    ok=timeOk(day,minTime,maxTime,sumtime,myTime);    if(ok==0){        printf("No\n");    }    else if(ok==1){        printf("Yes\n");        for(i=0;i<day;i++)            printf("%d ",myTime[i]);    }    return 0;}

没写循环,自己添加。(只能输入一次数据)
这里写图片描述

0 0