題目:輸入 N 行已加密字串 (每單字反序),還原原文。原始碼宣告 SString s[50000] 於區域變數,**陣列過大導致堆疊溢位 (Stack Overflow)**。
malloc / vector (C++)。#include <stdio.h>
#include <string.h>
void decode_line(char* line) {
char* token = strtok(line, " ");
while (token) {
for (int i = strlen(token)-1; i >= 0; --i) putchar(token[i]);
token = strtok(NULL, " ");
if (token) putchar(' ');
}
putchar('\n');
}
int main() {
int N; scanf("%d\n", &N);
char line[1000];
while (N-- && fgets(line, sizeof(line), stdin)) {
line[strcspn(line, "\n")] = 0; // 移除換行
decode_line(line);
}
return 0;
}
strtok 分割單字,反序列印即可,無需額外緩衝區。記憶體配置策略決定程式能否在 OJ 環境通過執行。