东华复试day18

发布时间:2026/7/15 7:34:18

东华复试day18 OJ91个人总结1。计分函数 process_and_print()按指定赛制11分或21分统计并输出比分record比赛记录字符串由W和L组成target_score目标分数11或21。对两种获胜条件进行判断任何一方达到目标分数11或21并领先至少2分或平局后净胜2分first_game 确保即使整组没有得分也输出0:02. 逐字符处理 W得分和 L失分每得一分后判断是否满足获胜条件当一局结束时输出当前比分并重置为0:0循环结束后如果还有未完成的比分或整组没有比分输出最后比分3. 对于每一组输入数据读取字符判断类型若读取 E结束当前组开始处理process_and_print() 函数若读取W/L存入数组 record[] 中若读取EOF表明文件结束处理最后一组测试数据若读取换行符忽略4. first 用于控制空行的输出在除第一组数据外的每组数据输出前输出一个空行#include stdio.h #include stdlib.h #include string.h //处理一种赛制并输出结果 void process_and_print(const char *record, int target_score){ int w 0, l 0; //当前局比分 int first_game 1; //是否是该组的第一个输出 for(int i 0; record[i] ! \0; i) { if(record[i] E) break; if(record[i] W) w; else if(record[i] L) l; //检查是否结束一局 int game_end 0; //达到目标分数且领先至少2分 if((w target_score || l target_score) abs(w - l) 2){ game_end 1; } //平分后target_score-1平领先2分 if(w target_score-1 l target_score-1 abs(w - l) 2){ game_end 1; } if(game_end){ printf(%d:%d\n, w, l); w l 0; first_game 0; } } //输出未完成的局如果有比分或一局都没开始 if(w 0 || l 0 || first_game){ printf(%d:%d\n, w, l); } } int main() { char record[1000]; //存储一组的记录 int group_count 0; int first 1; //是否是第一组 while(1) { int idx 0; int found_E 0; //读取一组数据可能跨越多行 while(!found_E){ //检查是否到达文件末尾 int ch getchar(); if(ch EOF){ //文件结束处理最后的数据 if(idx 0){ record[idx] \0; //输出结果 if(!first){ printf(\n); } process_and_print(record, 11); printf(\n); process_and_print(record, 21); } return 0; } if(ch E){ record[idx] E; found_E 1; } else if(ch W || ch L){ record[idx] ch; } //忽略其他字符包括换行符 } record[idx] \0; //确保字符串结束 //输出组间分隔除了第一组 if(!first){ printf(\n); } first 0; //处理并输出该组结果 process_and_print(record, 11); printf(\n); process_and_print(record, 21); } return 0; }OJ92个人总结遍历s1和s2在s1中出现过的字符串通过s1[i]-a将其值设置为1在s2中出现过的字符串通过s2[i]-a将其值设置为2在S1和S2中出现过的字符设置成3#include stdio.h #include string.h int main() { char s1[30], s2[30]; int first 1; //标记是否是第一组测试数据 while(scanf(%s%s, s1, s2) 2) { //标记数组0表示不存在1表示在s12表示在s23表示在s1和s2 int status[26] {0}; //0:不在任何字符串1:在s12:在s23:在s1和s2 int len1 strlen(s1); int len2 strlen(s2); //处理s1 for(int i 0; i len1; i){ int idx s1[i] - a; if(status[idx] 0) status[idx] 1; else if(status[idx] 2) status[idx] 3; } // 处理s2 for(int i 0; i len2; i){ int idx s2[i] - a; if(status[idx] 0) status[idx] 2; else if(status[idx] 1) status[idx] 3; } //输出组间空行除了第一组 if(!first) { printf(\n); } first 0; //在s1或s2中存在的字母 printf(in s1 or s2:); for(int i 0; i 26; i){ if(status[i] 1 || status[i] 2 || status[i] 3){ printf(%c, a i); } } printf(\n); //在s1中且在s2中的字母 printf(in s1 and s2:); for(int i 0; i 26; i){ if(status[i] 3){ printf(%c, a i); } } printf(\n); //在s1中但不在s2中的字母在s2中但不在s1中的字母 printf(in s1 but not in s2 ,or in s2 but not in s1:); for(int i 0; i 26; i){ if(status[i] 1 || status[i] 2){ printf(%c, a i); } } printf(\n); //不在s1中且也不在s2中的字母 printf(not in s1 and s2:); for(int i 0; i 26; i){ if(status[i] 0){ printf(%c, a i); } } printf(\n); } return 0; }OJ93个人总结使用二维数组 arr[L][L 1] 存储字符串的循环子串存储完成后使用 strcmp() 函数比较字符串的大小遍历所有循环子串找到最小的子串输出该子串在二维数组中的下标#include stdio.h #include string.h int main() { int L; scanf(%d\n, L); char S[L 1]; int count 0; char c; //读取 L 个非换行符字符 while(count L){ c getchar(); if(c EOF) break; if(c ! \n c ! \r){ S[count] c; } } S[L] \0; char arr[L][L 1]; for(int i 0; i L; i){ int k 0; for(int j i; j i L; j){ arr[i][k] S[j % L]; } arr[i][k] \0; } int min 0; for(int i 1; i L; i) { if(strcmp(arr[i], arr[min]) 0) { min i; //找到更小的 } } printf(%d, min); return 0; }OJ94个人总结字符串匹配最简单的方法就是暴力枚举#include stdio.h #include string.h int main(){ char s[101], subs[101]; while(scanf(%s %s, s, subs) ! EOF){ int m -1; int len strlen(s); int len1 strlen(subs); for(int i 0; i len - len1; i){ int found 1; for(int j 0; j len1; j){ if(s[i j] ! subs[j]){ found 0; break; } } if(found 1){ m i; break; } } printf(%d\n, m 1); } return 0; }OJ95个人总结利用空格来划分单词当遇到非空格时将当前字符添加到拼接单词字符串当遇到空格时结束当前字符串并比较字符串长度判断是否超过最长单词如果超过则将当前单词保存到最长单词字符串并重置当前字符串#include stdio.h #include string.h #define MAX_LINE 1001 // 每行最长1000字符 结束符 #define MAX_WORD 100 // 单个单词最长长度足够使用 int main() { char line[MAX_LINE]; // 逐行读取输入直到文件结束 while (fgets(line, MAX_LINE, stdin) ! NULL) { // 去掉换行符fgets会读取换行符 line[strcspn(line, \n)] \0; char longest_word[MAX_WORD] ; // 存储最长单词 int max_len 0; // 最长单词长度 char current_word[MAX_WORD] ; // 存储当前正在拼接的单词 int curr_idx 0; // 当前单词的字符索引 // 遍历每行的每个字符 for (int i 0; line[i] ! \0; i) { if (line[i] ! ) { // 当前字符是单词字符拼接当前单词 current_word[curr_idx] line[i]; } else { // 当前字符是空格处理已拼接的单词 if (curr_idx 0) { // 有有效单词避免连续空格 current_word[curr_idx] \0; // 结束当前单词 // 比较长度更新最长单词 if (curr_idx max_len) { max_len curr_idx; strcpy(longest_word, current_word); } // 重置当前单词 curr_idx 0; memset(current_word, 0, sizeof(current_word)); } } } // 处理字符串末尾的单词行尾无空格的情况 if (curr_idx 0) { current_word[curr_idx] \0; if (curr_idx max_len) { max_len curr_idx; strcpy(longest_word, current_word); } } // 输出结果长度 空格 单词 printf(%d %s\n, max_len, longest_word); } return 0; }Reinforcement learning is a machine learning approach that learns optimal strategies through interaction with the environment. In the reinforcement learning framework, an agent observes the state of the environment and takes corresponding actions in order to receive rewards or penalties. The goal of the agent is to find a policy that maximizes long-term cumulative rewards through continuous exploration and learning. Unlike supervised learning, reinforcement learning usually does not rely on large amounts of labeled data but improves decision-making ability through trial and error. Reinforcement learning has achieved success in many complex tasks such as robotic control, autonomous driving, and game artificial intelligence. In the famous Go program AlphaGo, reinforcement learning was combined with deep neural networks, enabling computers to reach or even surpass the level of top human players. However, in practical applications, reinforcement learning still faces challenges such as low sample efficiency and high training costs.强化学习是一种通过与环境交互来学习最优策略的机器学习方法。在强化学习框架中智能体a会观察环境状态并采取相应行动以获得奖励或惩罚。智能体的目标是通过持续的探索与学习找到能最大化长期累积奖励的策略。与监督学习不同强化学习通常不依赖大量标注数据而是通过试错来提升决策能力。强化学习已在机器人控制、自动驾驶、游戏人工智能等诸多复杂任务中取得成功。在著名的围棋程序 AlphaGo 中强化学习与深度神经网络相结合使计算机达到甚至超越了人类顶尖选手的水平。不过在实际应用中强化学习仍面临样本效率低、训练成本高等挑战。

相关新闻