Chinaunix首页 | 论坛 | 博客
  • 博客访问: 563650
  • 博文数量: 104
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1559
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-21 00:58
个人简介

锻炼精神,首先要锻炼肉体

文章分类

全部博文(104)

文章存档

2018年(1)

2016年(1)

2015年(101)

2014年(1)

我的朋友

分类: C/C++

2015-02-28 09:11:53

题目链接 :

这个问题的程序实现的时间复杂度是 O(N)
其中题目中供包含的循环各花费时间 O(N)
所以全部时间复杂度 为 O(N)

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void reverse ( int *arr , int from , int to )
  4. {
  5.     int temp ;
  6.     for ( int i = 0 ; i <= (to - from)/2 ; i++ )
  7.     {
  8.         temp = arr[to-i] ;
  9.         arr[to-i] = arr[from+i] ;
  10.         arr[from+i] = temp ;
  11.     }
  12. }
  13.  
  14. int main ( void )
  15. {
  16.     int arr [101] , N , M ;

  17.     scanf ("%d%d" , &N , &M) ;

  18.     for ( int i = 0 ; i < N ; i++ )
  19.     {
  20.         scanf("%d" , &arr[i]) ;
  21.     }
  22.     if ( M > N )
  23.          M = M % N ;
  24.         
  25.     if ( M != N || M == 0 || N == 1 )  // 1 2 3 4 5 6  (6 , 2 )
  26.    {    
  27.     reverse ( arr ,0 , N-M-1 ) ;    // 4 3 2 1 5 6
  28.     reverse ( arr , N-M , N-1 ) ;    // 4 3 2 1 6 5 
  29.     reverse ( arr , 0 , N-1 ) ;      //  5 6 1 2 3 4 
  30.     }
  31.   
  32.     for ( int i = 0 ; i <N ; i++ )
  33.     {
  34.         printf ("%d", arr[i] ) ;
  35.               if (i != N-1 )
  36.                  printf (" ") ;
  37.     }

  38.      return 0 ;
  39. }
两个测试点没有过
阅读(888) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~