您的位置:首页 > 职场人生

《程序员》2008年第1期"算法擂台" - Cantor表解答

2012-10-05 10:37 295 查看








/* 
  Name: Cantor Table
   Author: blackboy @ S.N.P
   Date: 08-01-08 23:08
   Description: Coded by Dev-C++ 4.9.9.2
 */ 

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

#define  MAX 20 

//  计算并打印Cantor表中第n项的值 
int  PrintCantor( int  n)
 {
      int  i, sum;
     
      if (n < 1   ||  n > 100000 )
      {
         printf( " invalid input! " );
          return   1 ;
     } 
    
     sum  =   0 ;
      for (i = 1 ; sum < n; i ++ )
         sum  +=  i;
         
      if (i % 2 == 0 )
         printf( " %d/%d " ,  - n + 1 + sum, n + i - 1 - sum);
      else 
        printf( " %d/%d " , n + i - 1 - sum,  - n + 1 + sum);
      return   0 ;
 } 

int  main( int  argc,  char   * argv[])
 {
      int  n[MAX];
      int  i, count;
     
     printf( " # input some positive integers, end with number 0: " );
     i  =   0 ;
     count  =   0 ;
      do 
     {
         scanf( " %d " ,  & n[i]);
         i ++ ;
         count ++ ;
     } 
     while (n[i - 1 ] != 0 );
     
     printf( " # related values in cantor table: " );
      for (i = 0 ; i < (count - 1 ); i ++ )
         PrintCantor(n[i]);
   
     system( " PAUSE " );    
      return   0 ;
 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: