OR126. 课程冲突
描述
小明是一名学生,又到了学校的选课时间,他想选一些课程学习,已知课程开课时间都在每周一到周五之内,早上4讲课,下午4讲课,晚上2讲课。
小明担心选课时间上有所冲突。所以他希望可以对课程时间进行检查。
输入描述
首先输入一个整数n(0<n≤100),表示小明选课总数。输出描述
如果没有冲突课程,输出YES。示例1
输入:
5 01 204521 23 204523 22 204526 01 204528 22 204527
输出:
01 204521 204528 22 204526 204527
C 解法, 执行用时: 2ms, 内存消耗: 336KB, 提交时间: 2019-05-05
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 100 int main() { //输入 int n; scanf("%d", &n); char data[MAX][2][6 + 1];//存输入的数据 for(int i = 0; i < n; i++) scanf("%s%s", &data[i][0], &data[i][1]); //处理 int ans[5][10][MAX] = {0}; int tmp[5][10] = {0}; for(int i = 0; i < n; i++) { ans[ data[i][0][0] - '0'][ data[i][0][1] - '0' ][ tmp[ data[i][0][0] - '0'][ data[i][0][1] - '0' ]++ ] = i; } //输出 int ConflictFlag = 0; for(int i = 0; i < 5; i++) for(int j = 0; j < 10; j++) { if(tmp[i][j] >= 2) { ConflictFlag = 1; printf("%d%d", i, j); for(int k = 0; k < tmp[i][j]; k++) printf(" %s", data[ans[i][j][k]][1]); printf("\n"); } } if(ConflictFlag == 0) printf("YES\n"); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2021-09-18
#include<stdio.h> #include<string.h> typedef struct fact { int a; int b; char c[10]; }fact; int main() { int n; fact t[100]; while (scanf("%d",&n)!=EOF) { int i,j,a_,b_,item; int sum[100]={0}; for(i=0;i<n;i++) { scanf("%d %s",&item,t[i].c); t[i].a=item/10; t[i].b=item%10; sum[item]++; } for(i=0;i<=49;i++) { if(sum[i]>=2) { a_=i/10; b_=i%10; printf("%02d ",i); for(j=0;j<n;j++) { if((t[j].a==a_)&&(t[j].b==b_)) printf("%s ",t[j].c); } printf("\n"); } } } return 0; }