吉大秦少游
2018-11-12 13:54
采纳率: 60%
浏览 530

1066 图像过滤,AC时为什么提示超时?

 //1066 图像过滤V1
#include <iostream> 
using namespace std;

int main(){
    long int M,N,A,B,replace,tmp,i; cin>>M>>N>>A>>B>>replace;
    for(i=0;i<N*M;i++){
        cin>>tmp;
        if(tmp>=A&&tmp<=B)  tmp=replace;
        printf("%03d%c",tmp,(i+1)%N==0?'\n':' ');
    }
    return 0;
}

这么短的程序时间复杂度只是N*M呀

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Italink 2018-11-12 14:07
    已采纳

    cin有缓存,效率比scanf低很多,也可以用cin.sync_with_stdio(false);,但是就不能和c的混用

     #include <iostream>
    using namespace std;
    
    int main() {
        int M, N, A, B, replace, tmp, i;
        cin >> M >> N >> A >> B >> replace;
        for (i = 0; i < N*M; i++) {
            scanf("%d", &tmp);
            if (tmp >= A && tmp <= B)  
                tmp = replace;
            printf("%03d%c", tmp, (i + 1) % N == 0 ? '\n' : ' ');
        }
        return 0;
    }
    
     #include <iostream>
    using namespace std;
    
    int main() {
        int M, N, A, B, replace, tmp, i;
        cin >> M >> N >> A >> B >> replace;
        cin.sync_with_stdio(false);
        for (i = 0; i < N*M; i++) {
            cin >> tmp;
            if (tmp >= A && tmp <= B)  
                tmp = replace;
            printf("%03d%c", tmp, (i + 1) % N == 0 ? '\n' : ' ');
        }
        return 0;
    }
    
    点赞 打赏 评论
  • 吉大秦少游 2018-11-12 13:56

    但是用c就可以通过

     #include <stdio.h> 
    int main() { 
      int N, M, A, B, C, D; 
      scanf("%d %d %d %d %d", &M, &N, &A, &B, &C); 
      for(int i = 0; i < M; i++) { 
        for(int j = 0; j < N; j++) { 
          scanf("%d", &D); 
          if(A <= D && D <= B) D = C; 
          printf("%03d%c", D, j == N - 1 ? '\n' : ' ');
          } 
      } 
      return 0; 
    }
    
    
    点赞 打赏 评论

相关推荐 更多相似问题