算法竞赛入门经典(第2版)习题4-8 特别困的学生UVa12108
来源:互联网 发布:二战德国火箭炮数据 编辑:程序博客网 时间:2024/06/10 05:00
输入学生个数、醒A分钟、睡B分钟和现在状态,输出第几分钟全部醒
做题体会:
题目不难,不过需要集中精神思考,处理好数组里的数,不要出现逻辑错误;当现在状态等于初始状态时,表示进入死循环,不存在全部醒的时候
begin数组里,第1列表示状态A,第2列表示状态B,第3列表示初始状态,第4列表示现在状态,数组sleep为1时表示睡,为0时表示醒;yn=1时可以进入睡眠状态;
#include <stdio.h>int n, begin[12][5], sleep[12];int yn; // if睡>醒 进入 睡,else 继续醒void check(int numstu){if(begin[numstu][3] > (begin[numstu][0]+begin[numstu][1]))begin[numstu][3] = begin[numstu][3] - (begin[numstu][0] + begin[numstu][1]);if(begin[numstu][3] == begin[numstu][0]+1 && yn) // yn=1 时可以睡sleep[numstu] = 1;else if(begin[numstu][3] == begin[numstu][0]+1 && yn == 0){sleep[numstu] = 0;begin[numstu][3] = 1;}else if(begin[numstu][3] < begin[numstu][0]+1)sleep[numstu] = 0;else if(begin[numstu][3] > begin[numstu][0]+1)sleep[numstu] = 1;} //是否睡,赋值给sleep数组void yesno(){int i, sleepnum = 0;for(i = 1; i <= n; i++)if(sleep[i] == 1)sleepnum++;if(sleepnum > n-sleepnum)yn = 1;else yn = 0;} //根据sleep数组判断是否可以睡觉int main(){while(scanf("%d", &n) && n){int i, ffvs = 1, nCase = 1, xing = 1;for(i = 1; i <= n; i++){scanf("%d%d%d", &begin[i][0], &begin[i][1], &begin[i][2]);}for(i = 1; i <= n; i++){for(;;){if(begin[i][2] > (begin[i][0]+begin[i][1]))begin[i][2] -= (begin[i][0]+begin[i][1]);else break;}if(begin[i][2] > begin[i][0])sleep[i] = 1;else sleep[i] = 0;}yesno();for(i = 1; i <= n; i++){begin[i][3] = begin[i][2];}for(i = 1; i <= n; i++){if(sleep[i] == 1)xing = 0;} //是否全部醒if(xing){printf("Case %d: %d\n", nCase++, ffvs);ffvs = 0;}for(;ffvs >= 1;){int dgyu = 1, xing = 1;ffvs++;for(i = 1; i <= n; i++){begin[i][3]++;check(i);} //更新完sleep数组for(i = 1; i <= n; i++){if(begin[i][2] != begin[i][3])dgyu = 0;}if(dgyu){printf("Case %d: -1\n", nCase++); // 不存在全部清醒break;}for(i = 1; i <= n; i++){if(sleep[i] == 1)xing = 0;} //是否全部醒if(xing){printf("Case %d: %d\n", nCase++, ffvs);break;}yesno();}}return 0;}
0 0
- 算法竞赛入门经典(第2版)习题4-8 特别困的学生UVa12108
- 算法竞赛入门经典(第2版)习题4-8 特别困的学生 Extraordinarily Tired Students UVa12108
- 算法竞赛入门经典 第二版 习题4-8 特别困的学生 Extraordinarily Tired Students uva12108
- 习题4-8 特别困的学生 UVa12108
- 习题4-8 特别困的学生 UVa12108
- 习题 4-8 特别困的学生 uva12108
- [刷题]算法竞赛入门经典(第2版) 4-8/UVa12108 - Extraordinarily Tired Students
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 特别困的学生 (特困生)
- uva12108 特别困的学生 (Extraordinary Tired Students
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色UVa253
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色 Uva253
- 算法竞赛入门经典(第2版)习题4-2 正方形 Squares UVa201
- 算法竞赛入门经典(第2版)习题4-2 正方形UVa201
- 算法竞赛入门经典(第2版)习题2-4
- 算法竞赛入门经典(第2版)习题3-8 循环小数 Repeating Decimals UVa202
- 算法竞赛入门经典(第2版)习题3-4 周期串 Periodic Strings UVa445
- 算法竞赛入门经典(第2版)习题4-1 象棋 Xiangqi UVa1589
- 算法竞赛入门经典(第2版)习题4-3 黑白棋 Othello UVa220
- brew update gives Error: Failed to update tap: homebrew/dupes
- android 基础知识(一)
- Multiply Strings -- leetcode
- VirtualBox共享文件夹设置
- [SharePoint 2010]为SharePoint 2010配置基于表单的身份认证
- 算法竞赛入门经典(第2版)习题4-8 特别困的学生UVa12108
- Andrew NG: 机器学习公开课纪要
- 学习Postgresql数据库
- Log4js多进程陷阱与避免
- CentOS压力测试工具Tsung安装和使用和图形报表生成
- 翻译错误_持续更新
- CSS布局基础心得
- sqlmap学习笔记 【1】
- Intellij Idea 13:导入openfire源代码