WA #6, 7, 8, 9, 10
  • 板块P5587 打字练习
  • 楼主lzn0
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/9 22:11
  • 上次更新2024/5/10 12:27:58
查看原帖
WA #6, 7, 8, 9, 10
69155
lzn0楼主2024/5/9 22:11
#include <stdio.h>
#include <string.h>

#define max_row 10000
#define max_col 100000
char a[max_row][max_col];

// 此函数用于处理'<'
void backward(char *a) {
    for (int i = 0; *(a + i) != 0; i++) {
        if (*(a + i) == '<') {
            if (i != 0) {
                strcpy(a + i - 1, a + i + 1);
                i -= 2;
            }
            else {
                strcpy(a, a + 1);
                i--;
            }
        }
    }
    return;
}

int main(void) {
    int i, ans = 0, T;
    char *a_finish = a[0], b[max_col], *a_p = a[0];
    // *a_finish用于指示范文的结尾,b用于临时存储R君的输入,*a_p用于指示当前被匹配的范文
  
    // 获取并存储范文
    for (; ; a_finish += max_col) {
        gets(a_finish);
        if (strcmp(a_finish, "EOF") == 0) {
            break;
        }
        backward(a_finish);
    }
  
    // 获取R君的输入,并判断正确字符数
    for (; ; a_p += max_col) {
        // 获取R君的输入
        gets(b);
        if (strcmp(b, "EOF") == 0) {
            break;
        }
        // 跳过多余行
        if (a_p >= a_finish) {
            continue;
        }
        backward(b);
        // 遍历字符,并判断正确字符数
        for (i = 0; (b[i] != 0) && (*(a_p + i) != 0); i++) {
            ans += (*(a_p + i) == b[i]);
        }
    }
  
    // 输出答案
    scanf("%d", &T);
    printf("%d", (int)((double)ans / (double)T * 60.0 + 0.5));
    return 0;
}
2024/5/9 22:11
加载中...