一:题目

课堂上有n个学生(n<=),每个学生上课都会出现一个“清醒-睡眠”周期,其中第i个学生学习Ai分钟后睡眠Bi分钟,依次重复。其中在从清醒到睡眠时有一个条件:只有到全班睡眠人数大于清醒人数时,这个学生才敢睡觉。
题目使用(A,B,C)来描述一个学生的信息,A是该学生的清醒时间,B是该学生的睡眠时间,C是该学生的初始状态值(即在初始时是这个周期的第几分钟)
问经过多久,所有人都清醒,当然也可能不存在这个时间,就输出-.

(一)案例详解

       学生人数
    清醒2分钟 睡眠4分钟 初始状态是在周期第1分钟
    清醒1分钟 睡眠5分钟 初始状态是在周期第2分钟
    清醒1分钟 睡眠4分钟 初始状态是在周期第3分钟

(一)样例输入

3       学生人数
2 4 1    清醒2分钟 睡眠4分钟 初始状态是在周期第1分钟
1 5 2    清醒1分钟 睡眠5分钟 初始状态是在周期第2分钟
1 4 3    清醒1分钟 睡眠4分钟 初始状态是在周期第3分钟

(二)样例输出

Case :
Case : -

二:代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string> #define CLASSTIME 1000000 //设置课程时间最大 int sNum; //学生人数1-10
int a[], b[], c[]; //记录各个学生的初始信息

获取学生信息

int getStuInfo()
{
scanf("%d", &sNum);
if (!sNum)
return ;
getchar(); for (int i = ; i <= sNum; i++)
{
scanf("%d %d %d", &a[i], &b[i], &c[i]);
getchar();
} return ;
}

获取全部学生清醒的时刻(真正开始上课的时间)

int getRealStuTime()
{
int count;
for (int i = ; i < CLASSTIME;i++)
{
count = ;
for (int j = ; j <= sNum; j++) //先获取睡觉人数
if (c[j] > a[j]) //在睡觉
count++;
if (count == ) //全部在学习
return i;
for (int j = ; j <= sNum; j++) //更新状态
{
if (c[j] == a[j] + b[j] || (c[j] == a[j] && count < sNum - count)) //一个周期 或者 如果睡觉人数少于学习人数,则不敢睡觉,开始重新学习
c[j] = ;
c[j]++; //更新每个学生的状态
}
}
return -;
}

主函数

void main()
{
int n = ;
FILE* fp = freopen("data8.in", "r", stdin);
freopen("data8.out", "w", stdout); while (getStuInfo())
printf("Case %d: %d\n", n++, getRealStuTime()); freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
}

最新文章

  1. ScrollTo:平滑滚动到页面指定位置
  2. RabbitMQ学习: 介绍
  3. virtualenv 安装
  4. Maximum Product Subarray JAVA实现
  5. CGContextRef CIImageRef详解
  6. jQuery验证插件
  7. Hibernate介绍和入门案例
  8. 手游 ui布局
  9. 人工智能背景下的Office 365现状和发展趋势
  10. vue 中的通过搜索框进行数据过滤的过程
  11. 基于335X平台的UBOOT中交换芯片驱动移植
  12. 关于js-xlsx的简单使用
  13. spring-framework-x.x.x.RELEASE-dist下载教程
  14. 手工生成AWR报告方法记录
  15. 【java多线程】队列系统之LinkedBlockingQueue源码
  16. vue-cli引入mui的步骤
  17. Spring注入方式(2)
  18. java7(2)——使用mutilcatch注意事项
  19. Mysql之正则匹配
  20. Many-to-many relationships in EF Core 2.0 – Part 3: Hiding as ICollection

热门文章

  1. rocketmq那些事儿之入门基础
  2. 忘记 MySQL 的 root 帐号密码该怎么办
  3. LightOJ - 1067 - Combinations(组合数)
  4. PAT1059Prime Factors
  5. ES code study
  6. C#实现上传/下载Excel文档
  7. linux安装sox,踩过坑的方法
  8. 洛谷P1714切蛋糕
  9. Ceilometer和Gnocchi的监控架构解析
  10. 从海量文本中统计出前k个频率最高的词语