永发信息网

杭电大OJ题1062,为什么这样的代码会Time Limited exceed,是太复杂了吗?

答案:1  悬赏:70  手机版
解决时间 2021-03-06 15:17
  • 提问者网友:你给我的爱
  • 2021-03-06 04:19
杭电大OJ题1062,为什么这样的代码会Time Limited exceed,是太复杂了吗?
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-03-06 04:45
#include 
#include 

void output(char str[]){
int slen = strlen(str);
for (int i = slen - 1; i >= 0; i--)
putchar(str[i]);
}

int main(){
int T, len;
scanf("%d", &T);
getchar();
for (int i = 1; i <= T; i++){
char str[1005], buff[100] = { 0 };
gets(str);
len = strlen(str);
for (int k = 0, j = 0; j <= len; j++){
if (str[j] == ' '){
buff[k] = 0;
output(buff);
printf(" ");
k = 0;
continue;
}
else if (str[j] == 0){
buff[k] = 0;
output(buff);
printf("
");
}
buff[k] = str[j];
k++;
}
}
return 0;
}追问为什么要把strlen(str)单独放到一个变量里才不会时间超限?可以告诉一下我吗?追答strlen()需要时间计算的,既然str是一个不变的字符串,没必要每次循环判断都重新计算
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯