/*
* =====================================================================================
*
* Filename: test.cpp
*
* Description:
*
* Version: 1.0
* Created: 2016å¹´03æ31æ¥ 15æ¶40å08ç§
* Last Modified: 2016å¹´03æ31æ¥ 15æ¶40å08ç§
* Revision: none
* Compiler: gcc
*
* Author: zt (),
* Organization:
*
* =====================================================================================
*/
#include
#include
#include
#include
#include
#include
#include
/* 19 */
int NStep ( int n )
{
if ( 0 == n )
return 1;
int res = 1;
for ( int i = 1; i <= n; ++i )
res *= i;
return res;
}
/* 20 */
int Fn ( int n )
{
int a[30] = { 0 };
int res = 0;
a[0] = 1;
a[1] = 1;
if ( n == 0 || n == 1 )
a[n];
for ( int i = 2; i <= n; ++i )
a[i] = a[i - 1] + a[i - 2];
return a[n];
}
/* 21 */
int F21 ( int n )
{
if ( n % 2 )
return F21 ( 3 * n + 1 );
else
return n / 2;
}
int F21_2 ( int n )
{
if ( n % 2 )
return ( 3 * n + 1 ) / 2;
else
return n / 2;
}
/* 24 */
template
bool F24 ( T array[], int start, int end, T x )
{
if ( ( start == end ) && ( array[start] == x ) )
return true;
else
return false;
if ( array[start] == x )
return true;
else
return F24 ( array, start + 1, end, x );
}
/* 25 */
void SubSetGen ( int n, int* flag, int cnt )
{
if ( 0 == n )
{
for ( int i = 0; i < cnt; ++i )
{
if ( flag[i] )
std::cout << 1;
else
std::cout << 0;
}
std::cout << std::endl;
return ;
}
flag[n] = 1;
SubSetGen ( n - 1, flag, cnt );
flag[n] = 0;
SubSetGen ( n - 1, flag, cnt );
}
void SubSetGen2 ( char* str, int* tag, int n, int cnt )
{
if ( n == 0 )
{
std::cout << "{";
for ( int i = 0; i < cnt; ++i )
{
if ( tag[i] == 1 )
std::cout << str[i];
else
std::cout << ' ';
}
std::cout << "}" << std::endl;
return;
}
tag[n] = 0;
SubSetGen2 ( str, tag, n - 1, cnt );
tag[n] = 1;
SubSetGen2 ( str, tag, n - 1, cnt );
}
void SubSetGen3 ( char* str, int n, int cnt )
{
char temp = 0;
if ( n == 0 )
{
std::cout << "{";
for ( int i = 0; i < cnt; ++i )
std::cout << str[i];
std::cout << "}" << std::endl;
return;
}
temp = str[n];
SubSetGen3 ( str, n - 1, cnt );
str[n] = ' ';
SubSetGen3 ( str, n - 1, cnt );
str[n] = temp;
}
/* 26 */
void F26 ( int n )
{
if ( 1 == n )
{
std::cout << 1 << ',';
return ;
}
F26 ( n - 1 );
std::cout << n << ',';
F26 ( n - 1 );
}
std::string F262 ( int n )
{
std::string temp;
if ( 1 == n )
{
temp = "1 ";
return temp;
}
temp += F262 ( n - 1 );
std::stringstream ss;
ss << n;
temp += ss.str();
temp += " ";
temp += F262 ( n - 1 );
}
int a[] = { 1, 3, 5, 7, 2, 4, 6, 8};
char b[] = { 'a', 'b', 'c', 'd', 'e'};
int main ( int argc, char* argv[] )
{
//printf ( "%d\n", NStep ( 5 ) );
//printf ( "%d\n", Fn ( 5 ) );
//printf ( "%d %d\n", F21 ( 211 ) , F21_2 ( 211 ) );
#if 0
if ( F24 ( a, 0, 7, 28 ) )
printf ( "find!\n" );
else
printf ( "not find!\n" );
#endif
//int tag[5];
//SubSetGen2 ( b, tag, 0, 5 );
//int tag[5];
//SubSetGen ( 3, tag, 3 );
//SubSetGen3 ( b, 5, 5 );
//F26 ( 4 );
std::cout << F262 ( 4 );
return 0;
}