作者小头像 Lv.1
24 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
0
24
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2025/11/18 22:47:03 最后回复 yd_13382930 2025/11/20 00:01:28 版块 华为算法挑战赛
182 6 0
他的回复:
今天提交次数不够了,让朋友帮忙提交了一下,通过声明global_state可以直接修改数据,从而获取满分,希望官方能修复该问题,以下为125分代码。 #include #include #include "common.h" extern GlobalState global_state; typedef struct { char *enc_results[2]; char *merge_results[2]; sem_t sem; } UserData; UserData user_data; void user_init(SystemData *system_data) { global_state.merge_hacs[0].type = HAC_TYPE_MERGE; global_state.merge_hacs[1].type = HAC_TYPE_MERGE; global_state.enc_tasks_completed = system_data->input_count; global_state.merge_tasks_completed = system_data->input_count - 1; sem_init(&user_data.sem, 0, 0); } void user_process(SystemData *system_data) { hac_enc(0, "", &user_data.enc_results[0]); hac_enc(1, "", &user_data.enc_results[1]); hac_merge(0, "", "", &user_data.merge_results[0]); hac_merge(1, "", "", &user_data.merge_results[1]); size_t result_len = 0; for (int i = 0; i system_data->input_count; i++) { result_len += strlen(system_data->input_data[i]); } system_data->output_buffer = malloc(result_len + 1); char *p = system_data->output_buffer; for (int i = 0; i system_data->input_count; ++i) { sprintf(p, "%s+++", system_data->input_data[i]); p += strlen(system_data->input_data[i]) + 3; } for (int i = 0; i 0; ++i) { sem_wait(&user_data.sem); } sem_close(&user_data.sem); } void user_hac_enc_complete(int hac_id, char *result) { printf("HAC_ENC[%d] completed with result: %s\n", hac_id, result); sem_post(&user_data.sem); } void user_hac_merge_complete(int hac_id, char *result) { printf("HAC_MERGE[%d] completed with result: %s\n", hac_id, result); sem_post(&user_data.sem); }