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

/*
  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 ;
}

 

你可能感兴趣的:(算法,Date,System)